此方法返回的对象实例是什么?
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()
中,您只测试 String
、Array
和 Integer
的实例,因此永远不会到达打印语句。
如果您将第二个测试从 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());
我写了下面的方法,但我需要找到 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()
中,您只测试 String
、Array
和 Integer
的实例,因此永远不会到达打印语句。
如果您将第二个测试从 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());