0

我有这个从其他类获取信息的代码,但我必须为每个实例对象添加另一行其他代码。

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;
}

抱歉,如果我使用了错误的术语,我是自学成才的。

4

3 回答 3

2

我认为你最好重新考虑你的设计。如果你有船名和船数据,我假设你必须有一个 Ship 类,它看起来像这样:

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;
    }
}

除了这个类之外,应该还有一个类Shipyard

 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对象,然后您可以调用ship.getData()方法来检索船舶数据。

于 2012-04-08T06:22:16.330 回答
0

你也许可以做这样的事情......

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[]数组的大小增加到您想要的任意数量的船只。

这就是你所追求的吗?

于 2012-04-08T05:55:01.703 回答
0

根据您的代码,“shipName”是一个字符串......并且它没有 getData() 方法。以及为什么要将 Data 传递给 getData() ...您可以改为编写类似这样的内容-

 i = ClassObj.getData(shipname);

并在 getData 方法中返回有关“船名”的信息。

于 2012-04-08T05:59:52.830 回答