将对象放置在正确位置(Java)

将对象放置在正确位置(Java),java,Java,我有一个简单的测试 public class Game { public static void main(String[] args) { // TODO Auto-generated method stub Board b1 = new Board(); Knight bk = new Knight(Player.BLACK); b1.placePiece(0, 0, bk); System.out.

我有一个简单的测试

public class Game {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        Board b1 = new Board();
        Knight bk = new Knight(Player.BLACK);
        b1.placePiece(0, 0, bk);
        System.out.println(b1.getPiece(0, 0));


    }

}
这应该打印出“bk”,因为它被放置在板b1的(0,0)上。但实际上它返回null

我的董事会课程如下所示:

getPiece应该返回[x][y]上的片段,但当然不会,因为[x][y]上没有任何内容。我知道出了什么问题,但我不知道如何解决这个问题

我的作品课看起来像:

public abstract class Piece {

    Player color;
    int x, y;

    Piece(Player color){
        this.color = color;

    }

...

}
因此,我不知道如何使board[x][y]有一个正确的值,即正确的工件对象

编辑:

编辑2:

public class Board {


....

}

您需要初始化电路板

board = new Piece[rows][cols]
考虑在构造函数中执行此操作

更新:

要获得名称,您应该将成员名称添加到工件类中

abstract class Piece {

        java.awt.Color color;
        String name;
        int x, y;

        Piece(java.awt.Color color, String name) {
            this.color = color;
            this.name = name;

        }

        @Override
        public String toString() {
            return "Piece{" +
                    "color=" + color +
                    ", name='" + name + '\'' +
                    ", x=" + x +
                    ", y=" + y +
                    '}';
        }
    }

class Knight extends Piece {

        Knight(Color color, String name) {
            super(color, name);
        }

        @Override
        public boolean equals(Object obj) {
            Knight that = (Knight) obj;
            return this.color == that.color && this.name.equals(that.name);
        }
    }
重写字符串将导致

System.out.println(new Knight(Color.BLACK, "Robin Hood"));
印刷

Piece{color=java.awt.Color[r=0,g=0,b=0], name='Robin Hood', x=0, y=0}

你能给我们看一下你的
placePiece
方法的代码吗?以及你是如何初始化电路板的。编辑@IddoE你说的是Board的构造函数吗?我没有添加那个。@user6792790在类板中,你们初始化板吗?board=新的[rows][cols]?谢谢,但返回board[x][y];在getPiece上,方法实际上并不返回对象的名称。我怎样才能让它返回对象的名称?@user6792790-hmm。。“物体名称”是什么意思?它返回对象的reference@user6792790在Java中,返回变量名并不是你真正能做的事情,你想让它返回“bk”?所以当我做Knight bk=new Knight(Player.BLACK)时;还有getPiece,我希望它能返回bk。