我有一个Object[]数组,我试图找到原始的数组.我试过用Class.isPrimitive(),但似乎我做错了什么:
int i = 3;
Object o = i;
System.out.println(o.getClass().getName() + ", " +
o.getClass().isPrimitive());
Run Code Online (Sandbox Code Playgroud)
打印java.lang.Integer, false.
有正确的方法或替代方案吗?
我有一个Class<?>任意类型的参考.如何获得该类型的初始化值?是否有一些库方法或我必须自己滚动,如:
Class<?> klass = ...
Object init =
(klass == boolean.class)
? false
: (klass == byte.class)
? (byte) 0
...
: (Object) null;
Run Code Online (Sandbox Code Playgroud)
用例是我有一个任意java.lang.reflect.Method引用,我想用任意参数调用(对于某些测试),这可能不是null在参数是基本类型的情况下,所以我需要指定该类型的某个值.
这里是我想要实现的函数签名.
public boolean isBaseTypeOrArray(Object obj){~}
Run Code Online (Sandbox Code Playgroud)
只有当obj属于以下类型之一时,我才想返回true.
boolean or boolean[]
byte or byte[]
short or short[]
int or int[]
long or long[]
float or float[]
double or double[]
char or char[]
java.lang.String or String[]
Run Code Online (Sandbox Code Playgroud)
对于一个单独的值检查它是否是其中一个包装类(Integer,Float,...)的实例或String应该工作因为自动装箱,但我不知道如何检查数组的情况.有任何想法吗?