我编写了下面的方法,但是我需要找到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的实例应该是什么,我运行这个,那么控制台就不会显示任何东西。
发布于 2015-05-29 13:24:22
实例应该是Integer[]
else if (obj.testObj() instanceof Integer[])
System.out.println("Integer Array");发布于 2015-05-29 13:28:26
Java数组不是java.lang.reflect.Array的子类。
换句话说,整数数组无法通过测试。
(obj.testObj() instanceof Array)发布于 2015-05-29 13:35:13
testObj()将返回一个整数数组,其类型在Java中被写入为Integer[]。在main()中,您只测试String、Array和Integer的实例,因此永远不会到达print语句。
如果要将第二个测试从Array更改为Integer[],它将按您的意愿工作:
else if (obj.testObj() instanceof Integer[])
System.out.println("Integer Array");使用obj.testObj() instanceof Array的原因是java.lang.reflect.Array类实际上不是Java数组的超类。根据JavaDoc页面,类“提供静态方法来动态创建和访问Java数组”--它不是数组本身,它只是创建和访问数组的实用工具。
https://stackoverflow.com/questions/30530695
复制相似问题