假设我有一个名为thisObject
的对象,它可能是int,String,Object等,或者是这类的数组。我希望生成的类存储在名为Class
的{{1}}变量中。
这不会编译,但希望能够解释我在寻找的内容:
thisObjectArrayClass
这个问题是它依赖于switch / case语句,这显然是不可接受的。我使用反射尝试这样做的尝试失败了,但我是Java的新手,所以也许我做错了。如何实现这一目标?
答案 0 :(得分:7)
您正在寻找Array.newInstance
:
thisObjectArrayClass = Array.newInstance(thisObject.class, 0).getClass();
实例化thisObject.class
es的 0-length 数组,并请求此类对象的class
。
答案 1 :(得分:1)
Object有一个getClass()方法。
public Class getClass(Object thisObject) {
Class thisObjectArrayClass = obj.getClass();
System.out.println("The type of the object is: " + thisObjectArrayClass.getName());
return thisObjectArrayClass;
}
答案 2 :(得分:-1)
您只能打开整数(或Java7中的字符串)。使用if / else序列或7中的开关。无论哪种方式,您可能正在寻找的方法是thisObject.getClass()
switch(obj.getClass().getName()) {
case "java.lang.String" :
System.out.println("Found String");
break;
default:
System.out.println("Found:" + obj.getClass().getName());
}
答案 3 :(得分:-2)
int array[] = new int[7];
array.getClass();