假设我有一个名为的对象thisObject,可以是int,String,Object等,也可以是这类的数组.我希望结果类存储在一个Class名为的变量中thisObjectArrayClass.
这不会编译,但有希望解释我在寻找什么:
switch(thisObject.class) {
case int.class:
int[] tempObject;
thisObjectArrayClass = tempObject.class;
break;
case float.class:
float[] tempObject;
thisObjectArrayClass = tempObject.class;
break;
case int[].class:
int[][] tempObject;
thisObjectArrayClass = tempObject.class;
break;
}
Run Code Online (Sandbox Code Playgroud)
这个问题是它依赖于switch/case语句,这显然是不可接受的.我使用反射尝试这样做的尝试失败了,但我是Java的新手,所以也许我做错了.怎么能实现这一目标?
您正在寻找Array.newInstance:
thisObjectArrayClass = Array.newInstance(thisObject.class, 0).getClass();
Run Code Online (Sandbox Code Playgroud)
这实例化了一个0长度的thisObject.classes 数组,并请求class这样的对象.