繁体   English   中英

使用字符串作为实例 object 名称

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM