I am using .toString to return a string representation of an object, i.e.
jcb.engineMove(move.toString());
will produce e2e4.
What I am trying to do is to extract the text of this object (e2e4) as a string. After Googling I came across overriding the toString method so I came up with this:
@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;
}
My questions are fairly basic:
- is this the right approach
- How do I call this routine when trying to get the text of the object?
Overriding
Object.toStringis a good approach.However, your current implementation makes a major mistake by creating a new
Moveobject (see below).To call the routine (once you fix it), do exactly what you’re already doing:
jcb.engineMove(move.toString());If
toString()should only be used for debugging (as mre says) you could implement another method namedgetTextthat does the same thing.IMPORTANT NOTE:
You should not be creating a new
Moveobject inside itstoStringmethod.This is a very bad idea (as mentioned by others).
Your
toStringmethod should simply build a string and return it.