[英]Using a String for an instance object name
我有这段代码可以从另一个 class 获取信息,但我必须为每个实例 object 添加另一行其他代码。
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;
}
抱歉,如果我使用了错误的术语,我是自学的和新的。
我认为你最好重新考虑你的设计。 如果您有船舶名称和船舶数据,我假设您必须有一艘船舶 class,它看起来像这样:
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;
}
}
除了这个 class 应该有一个像Shipyard
这样的 class :
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);
}
}
因此,首先调用 shipyard.getShip("Player") 方法获取ship
object,然后调用ship.getData()
方法检索船舶数据。
你也许可以做这样的事情......
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);
}
这将允许您创建任意数量的船只,只需将ships[]
数组的大小增加到您想要的任意数量的船只即可。
这就是你想要的吗?
根据您的代码“shipName”是一个字符串......并且它没有 getData() 方法。 你为什么要将数据传递给 getData()...你可以改为写这样的东西 -
i = ClassObj.getData(shipname);
并在方法 getData 中返回有关“船名”的信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.