在Java中的Reflection期间将原始数组转换为String

时间:2016-08-01 10:59:44

标签: java reflection

我正在研究一种用于反射的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);
}

我正在传递一个对象,并且在传递它时无法投射该对象,任何人都能为我提供一些解决这个问题的见解吗?我现在想远离图书馆,因为我想更好地理解反思。

0 个答案:

没有答案