我使用.toString来返回对象的字符串表示,即
jcb.engineMove(move.toString());
Run Code Online (Sandbox Code Playgroud)
将产生e2e4.
我想要做的是将此对象(e2e4)的文本提取为字符串.在谷歌搜索后,我遇到了覆盖toString方法,所以我想出了这个:
@Override
public String toString() {
String s = "";
int newRank = getRank();
int newFile = getFile();
final Move move = new Move(rank, file, newRank, newFile);
s+="" + move;
return s;
}
Run Code Online (Sandbox Code Playgroud)
我的问题很基本:
压倒Object.toString是一种很好的方法.
但是,您当前的实现通过创建新Move对象会产生重大错误(请参阅下文).
要调用例程(一旦修复它),请完成您已经在做的事情:
jcb.engineMove(move.toString());
如果toString()只应该用于调试(如mre所说),你可以实现另一个名为getText同样的方法.
重要的提示:
您不应该Move在其toString方法中创建新对象.
这是一个非常糟糕的主意(正如其他人所说).
您的toString方法应该只是构建一个字符串并返回它.