Let's say I have a class like this (and also further assume that all the private variables:
public class Item {
private String _id = null;
private String _name = null;
private String _description = null;
...
}
Now, if I want to build a toString() representation of this class, I would do something like this inside the Item class:
@Override
public String toString() {
return (_id + " " + _name + " " + _description);
}
But what if I have say 15 private variables inside the class? Do I have to write the name of each and every variable like this?
Ideally, I would like to get over with the task by iterating through the list of private variables of this class and construct the string representation:
@Override
public String toString() {
ArrayList<String> members = getClass().getMembers(); //Some method like this
String string = "";
for(...)
string += members[i] + " ";
}
Or perhaps a toJSON method, I would still need access to the names of these variables. Any suggestions?
Check this API org.apache.commons.lang.builder.ToStringBuilder, it provides multiple ways to create toString usinf reflection or without reflection. Take a look at other subclasses as well.