Java是否具有const引用等价物?

cch*_*ion 9 c++ java const

这是一段代码:

    //Game board is made up of Squares.  A player can place GamePieces on a Square.
    public class CheckersBoard
    {
        public boolean PlaceGamePiece(GamePiece gamePiece, int nRow, int nColumn) {
            return m_theGameBoard[nRow][nColumn].PlaceGamePiece(gamePiece);
        }

        private Square[][] m_theGameBoard;
    }
Run Code Online (Sandbox Code Playgroud)

假设我正在测试PlaceGamePiece方法(使用junit),我需要访问m_theGameBoard,这样我就可以查看它并验证GamePiece是否放置在正确的Square上并且具有正确的数据.

在C++中我要么让测试类成为朋友,所以它可以访问私有成员m_theGameBoard,或者我有一个函数返回一个无法修改的const GameBoard(因为它是const):

const GameBoard& GetGameBoard() const { return m_theGameBoard; }
Run Code Online (Sandbox Code Playgroud)

现在我可以做任何检查我想在游戏板上做的事情,但我不能修改游戏板,因为它是常量.

Java不支持返回const引用或朋友类.所以我的问题是这样做的标准Java方法是什么?我是否必须提供一堆get访问器,以便我检查数据Square

更新:我最终写了一个GetPiece方法,正如Kaleb Brasee建议的那样.

public GamePiece GetGamePiece(Point pt) {
    return new GamePiece(m_theGameBoard[pt.GetRow()][pt.GetColumn()]);
}
Run Code Online (Sandbox Code Playgroud)

注意我创建了一个新的GamePiece对象并返回该对象.我没有返回GameBoards内部参考,因此没有人可以修改游戏板,因为他们只有副本!太好了!感谢帮助人员,一些非常好的建议.

仅供参考:当我在这里张贴物品时,我会不断更改物品的名称,对不起,如果这让任何人感到困惑.

Kal*_*see 3

将变量定义为protected,这样如果单元测试位于同一个包中,则可以访问它。

但是,我只想添加一个公共方法getPiece(int row, int col),该方法返回该方块上的棋子(如果那里没有棋子,则返回 null)。无论如何,您可能都需要这样的方法,并且可以在测试中使用它。