我正在研究一种用于反射的toString方法。 目前我可以使用以下代码处理所有原始类型:
@Override
public String toString() {
StringBuilder result = new StringBuilder();
Field field;
String value;
try {
for (String FIELDS1 : FIELDS) {
field = this.getClass().getDeclaredField(FIELDS1.toLowerCase());
value = field.get(this).toString();
result.append("\n").append(field.getName())
.append("[").append(field.getType().getName()).append("]")
.append(" : ")
.append(value)
.append(",");
}
return result.toString().substring(0, result.length()-1);
} catch (NoSuchFieldException
| SecurityException
| IllegalArgumentException
| IllegalAccessException ex) {
...
}
}
但是,一旦方法遇到基本类型数组,它就不会打印整个数组,我完全理解为什么。
为了解决这个问题,我创建了一些方法,将原始类型的数组转换为String,并通过java.lang.reflect.Method
调用并调用:
if(field.getType().isArray() && field.getType().getName().contains("String"))
{
method = this.getClass().getMethod("stringArrToString", String[].class);
value = method.invoke(this, field.get(this)).toString();
}
else
{
value = field.get(this).toString();
}
public String stringArrToString(String[] array){
return Arrays.toString(array);
}
我正在传递一个对象,并且在传递它时无法投射该对象,任何人都能为我提供一些解决这个问题的见解吗?我现在想远离图书馆,因为我想更好地理解反思。