检查objekt是否是一个数组

时间:2018-04-13 16:32:47

标签: java arrays reflection

我目前正在尝试用这样的逻辑拆开一个objekt

public String toString(Object x) throws IllegalArgumentException, IllegalAccessException {
    if(i > 10000) {
        throw new StackOverflowError("The Deserilesation of an objekt has overflowen");
    }
    i++;
    if(x instanceof String) {
        return String.valueOf(x);
    }else if(x instanceof Integer) {
        return String.valueOf(x);
    }else if(x instanceof Boolean) {
        return String.valueOf(x);
    }else if(x instanceof Long) {
        return String.valueOf(x);
    }else if(x instanceof Float) {
        return String.valueOf(x);   
    }else if(x instanceof Double){
        return String.valueOf(x);   
    }else if(x instanceof Byte){
        return String.valueOf(x);   
    }else if(x instanceof Character){
        return String.valueOf(x);   
    }else {
        String toreturn = "{";
        for(Field f : x.getClass().getDeclaredFields()) {
            f.setAccessible(true);
            try {
                toreturn += f.getName() + ":"+ toString(f.get(x)) + " ";
            }catch (NullPointerException e) {
                toreturn += f.getName() + ":Null ";
                }
            }
            toreturn += "}";
    return toreturn;
}

但是如果有一个int[]那么我会得到像00000 @ 000000这样的standert tostring,我的问题我怎么能发现我有一个数组,我试过if(x instanceof Array)但是没有数组类

2 个答案:

答案 0 :(得分:3)

你可以这样做:

x instanceof int[]

但更普遍的是:

x.getClass().isArray()

答案 1 :(得分:1)

要知道数组的类名,请使用以下语法: - 的 array_name.getClass()。的getName()即可。要检查对象是否为数组,请使用 isArray()方法,如下所示: - array_name.getClass()。isArray()。有关更多说明,请参阅以下示例: -

class Sample{
    public static void main(String args[]){
        int arr[] = {1,2,3};
        System.out.println(arr.getClass().isArray());
    }
}

我希望它有所帮助。谢谢!