此方法返回的对象实例是什么?

What instance of the Object is this method returning?

我写了下面的方法,但我需要找到 object 的实例 returned.Also 我需要检查它是 JSON 类型还是返回的其他类型然后这个方法有用吗?

public class DynamicObject {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        DynamicObject obj = new DynamicObject();

        if(obj.testObj() instanceof String)
            System.out.println("String");
        else if (obj.testObj() instanceof Array)
            System.out.println("Integer Array");
        else if (obj.testObj() instanceof Integer)
            System.out.println("Integer");


    }

    private Object testObj(){
        boolean test = false;
        String s= new String("test");
        Integer in[] = {1,2,3,4,5};
        if(test){
            return s;
        }else{
            return in;
        }
    }

}

这个 case.If 我 运行 这个的实例应该是什么然后控制台没有显示任何东西。

instanceof 应该是 Integer[]

else if (obj.testObj() instanceof Integer[])
            System.out.println("Integer Array");

Java 数组不是 java.lang.reflect.Array 的子类。

换句话说,整数数组未通过测试

(obj.testObj() instanceof Array)

testObj()将return一个整数数组,其类型在Java中写为Integer[]。在 main() 中,您只测试 StringArrayInteger 的实例,因此永远不会到达打印语句。

如果您将第二个测试从 Array 更改为 Integer[],它将按您的预期运行:

else if (obj.testObj() instanceof Integer[])
    System.out.println("Integer Array");

使用 obj.testObj() instanceof Array 不起作用的原因是 java.lang.reflect.Array class 实际上不是 Java 数组的超级 class。根据 JavaDoc page、class "provides static methods to dynamically create and access Java arrays" - 它本身不是数组,它只是一个创建和访问数组的实用程序。

获取对象类型:

Class cls = obj.testObj().getClass(); 
System.out.println("The type of the object is: " + cls.getName());