我编写了一个下面的方法,但是我需要找到返回object
的实例。我还需要检查它是JSON
类型还是返回的其他类型,然后这个方法会起作用吗? / p>
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;
}
}
}
这种情况的实例是什么。如果我运行它,那么控制台不会显示任何内容。
答案 0 :(得分:3)
instanceof应为Integer []
else if (obj.testObj() instanceof Integer[])
System.out.println("Integer Array");
答案 1 :(得分:2)
Java数组不是java.lang.reflect.Array的子类。
换句话说,整数数组FAILS测试
(obj.testObj() instanceof Array)
答案 2 :(得分:1)
$sql1="SELECT * FROM myTable WHERE `area` = :criteria AND `condition` = :diagnosis";
$stmt = $dbh->prepare($sql1);
$stmt->execute(array('criteria' => $search_crit, 'diagnosis' => $diagnosis));
将返回一个Integers数组,其Java类型写为testObj()
。在Integer[]
中,您只测试main()
,String
和Array
的实例,因此无法获得任何打印语句。
如果您要将第二个测试从Integer
更改为Array
,则可以按预期工作:
Integer[]
使用else if (obj.testObj() instanceof Integer[])
System.out.println("Integer Array");
的原因不起作用是因为obj.testObj() instanceof Array
类实际上不是Java数组的超类。根据{{3}},类"提供静态方法来动态创建和访问Java数组" - 它本身不是一个数组,它只是一个创建和访问数组的实用程序。
答案 3 :(得分:0)
获取对象的类型:
Class cls = obj.testObj().getClass();
System.out.println("The type of the object is: " + cls.getName());