2012-04-08 102 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關於「貨主」的信息。

相關問題