2012-04-08 99 views
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; 
} 

对不起。

+0

是'Player#getData'静态类方法,它接收一个'int'并返回另一个'int'? – 2012-04-08 06:18:31

+0

'我= shipName.getData(Data);'是错误的。 'shipName'是'String'类的实例,并没有'getData'方法。 – MJM 2012-04-08 06:20:43

回答

2

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

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()方法检索出货数据。

+0

感谢这似乎正是我想要的。 – twilding 2012-04-08 06:51:02

+0

船厂+1。 :-)和OOP的一个很好的例子。建议:如果'registerShipByName'需要两个参数,那么第二个可以是'data'。这样它可以创建一个新的“Ship”,然后注册它。如果'Ship'已经存在,那么'registerShipByName'只需要'Ship'参数,并且它可以从'Ship'获得'name'。 – 2012-04-08 11:45:47

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[]数组的大小是你想然而,许多船只。

这是你所追求的吗?

+0

我会很好,如果我不必这样做,但这将工作谢谢。 – twilding 2012-04-08 06:19:26

0

根据您的代码“shipName”是一个字符串......并且它没有getData()方法。为什么你的数据传递到的getData()...你可以写,而不是像这个 -

i = ClassObj.getData(shipname); 

,并在方法返回的getData关于“货主”的信息。

相关问题