Java 使用字符串作为实例对象名称
我有一个从其他类获取信息的代码,但我必须为每个实例对象添加另一行代码Java 使用字符串作为实例对象名称,java,Java,我有一个从其他类获取信息的代码,但我必须为每个实例对象添加另一行代码 public static int giveShipData(String shipName,int Data){ if(shipName.equals("Player")){i = Player.getData(Data);} return i; } 有没有可能有这样的东西: public static int giveShipData(String shipName,int Data){ i =
public static int giveShipData(String shipName,int Data){
if(shipName.equals("Player")){i = Player.getData(Data);}
return i;
}
有没有可能有这样的东西:
public static int giveShipData(String shipName,int Data){
i = shipName.getData(Data);
return i;
}
抱歉,如果我使用了错误的术语,我是自学成才的新手。您可能可以这样做
int[] ships = new int[3]; // 3 ships
public void populateShips(){
for (int i=0;i<ships.length;i++){
ships[i] = giveShipData(shipname,data);
}
}
public int giveShipData(String shipName,int data){
return shipName.getData(data);
}
int[]ships=newint[3];//3艘船
公共权力{
对于(int i=0;i,根据您的代码,“shipName”是一个字符串…并且它没有getData()方法。为什么要将数据传递给getData()…您可以编写如下内容-
i = ClassObj.getData(shipname);
在方法getData中,返回有关“shipname”的信息。我认为您最好重新考虑您的设计。如果您有船名和船数据,我假设您必须有一个类似以下内容的船类:
public class Ship {
private String name;
private int data;
public Ship(String name, int data) {
this.name = name;
this.data = data;
}
public String getName() {
return name;
}
public int getData() {
return data;
}
}
除了这个类之外,还应该有一个类,如Shippyard
:
public class Shipyard {
private Map<String, Ship> shipsByNameMap = new HashMap<String, Ship>();
public void registerShipByName(String name, Ship ship){
shipsByNameMap.put(name, ship);
}
public Ship getShipByName(String name){
return shipsByNameMap.get(name);
}
}
公共级造船厂{
私有映射shipsByNameMap=newhashmap();
public void registerShipByName(字符串名称,装运){
shipsByNameMap.put(名称、船舶);
}
公共船舶GetShippyName(字符串名称){
返回shipsByNameMap.get(名称);
}
}
因此,首先调用shipyard.getShip(“Player”)方法来获取ship
对象,然后调用ship.getData()
方法来检索船舶数据。是Player#getData
一个静态类方法,它接收int
,并返回另一个int
?i=shipName.getData(data);
是错误的。shipName
是String
类的实例,并且没有getData
方法。如果不必这样做,我会很高兴,但这会起作用的。谢谢。这似乎正是我想要的。+1对于造船厂来说。:-)建议:如果registerShipByName
接受两个参数,那么第二个参数可能是数据
。这样,它可以创建一个新的Ship
,然后注册它。如果Ship
已经存在,那么registerShipByName
只需要Ship
参数,并且t可以从发货
获取名称
。