1

私がやっていることは、カスタムクラスを書く練習のためにac#プロジェクトをjavaに置き換えています。残念ながら、コンストラクター内で「this」キーワードを使用してその人が何をしているのか理解できません。

// 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でこの特定のインスタンスに関する情報を見つけることができないようです。誰かが私のために良いリードを持っていますか?

4

3 に答える 3

9

それはコンストラクターにはありません。これがインデクサーの宣言です。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;
}
于 2012-08-15T18:08:36.930 に答える
0

これはインデクサー(C#)を使用しています。

このブログには、C#インデクサーをJavaコードに移植する方法についてのアイデアがいくつかあります。

基本的に、これはJavaゲッター/セッターで実現できます。

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

public Player set(int x, int y, Player p) { squares[x][y] = p;}
于 2012-08-15T18:08:28.387 に答える
0

これはコンストラクターではなく、インデクサーです。基本的に、この定義により、次のことが可能になります。

Player playerAtOrigin = myGameBoard[0, 0];

Javaでは、配列のみにインデクサー(例myArray[i])があり、独自のインデクサーを定義することはできません。getPlayerAt(int x, int y)ほとんどの場合、これを2つのメソッドとに変換する必要がありますsetPlayerAt(int x, int y, Player player)

于 2012-08-15T18:08:38.370 に答える