2012-08-15 94 views
1

我正在做的是將C#項目轉換爲java編寫自定義類的練習。 不幸的是,我無法弄清楚這個人在構造函數中使用「this」關鍵字所做的事情。Java - 轉換「this [int x,int y]」

// C# Code - How is this written in Java? 
public Player this[int x, int y] 
{ 
    get { return squares[x, y]; } 
    set { squares[x, y] = value; } 
} 

我轉置了很多的代碼,有點卡住了這一點。我似乎無法在Java中找到關於此特定實例的任何信息。有沒有人對我有好的領導?

回答

9

這不是在構造函數中。這是indexer的聲明。相當於Java中的會是這樣的:

public Player getPlayer(int x, int y) 
{ 
    // Note: Java doesn't have "real" multidimensional arrays, 
    // only arrays of arrays. 
    return squares[x][y]; 
} 

public Player setPlayer(int x, int y, Player player) 
{ 
    squares[x][y] = player; 
} 
+0

感謝喬恩......這幫了很大忙。很高興知道有沒有實際的多維陣列... – 2012-08-15 18:17:51

0

這是Using Indexers (C#)

blog有一些關於如何將C#索引器移植到java代碼的想法。

基本上,它可以在Java的getter/setter實現:

public Player get(int x, int y) { return squares[x][y];} 

public Player set(int x, int y, Player p) { squares[x][y] = p;} 
0

這不是一個構造函數,這是一個indexer。基本上,這個定義可以讓你做:

Player playerAtOrigin = myGameBoard[0, 0]; 

在Java中,只有數組有一個索引(例如myArray[i]),你不能定義自己的索引。很可能,您需要將其翻譯爲getPlayerAt(int x, int y)setPlayerAt(int x, int y, Player player)兩種方法。

+0

很酷,感謝糾正我。即時通訊真的是新的Java。這將如何轉移到Java? – 2012-08-15 18:10:25

+0

您需要制定兩種方法讓玩家獲得其位置並設置玩家位置。在這種情況下,這些方法只需查看「方塊」數組(如Jon Skeet的答案中所示)。 – 2012-08-15 18:13:52