One*_*ree 8 java reflection field
我有一个对象Field field.
我想检查是否field是类型的对象Foo或数组:Foo[].
Psuedo代码:
if field.getType() is Foo || field.getType is Foo[]
Run Code Online (Sandbox Code Playgroud)
这可能吗?
我试过了
if (field.getType().isArray())
// do something
Run Code Online (Sandbox Code Playgroud)
但这只允许我检查是否field是一个数组.
相反,这样做只会检查它是否是一个对象 Foo
if (Foo.class.isAssignableFrom(field.getType())
// do something
Run Code Online (Sandbox Code Playgroud)
知道怎么做吗?
谢谢.
Cla*_*lke 19
下面是我用过的一些代码来处理Java中所有原始类型的数组.由于它们不扩展Object类,因此检查Object []的实例是不够的.
/* Check if the given object is an array. */
if (object.getClass().isArray()) {
Class<?> componentType;
componentType = object.getClass().getComponentType();
if (componentType.isPrimitive()) {
if (boolean.class.isAssignableFrom(componentType)) {
for (boolean anElement : (boolean[]) object) {
/* ... */
}
}
else if (byte.class.isAssignableFrom(componentType)) {
/* ... */
}
else if (char.class.isAssignableFrom(componentType)) {
/* ... */
}
else if (double.class.isAssignableFrom(componentType)) {
/* ... */
}
else if (float.class.isAssignableFrom(componentType)) {
/* ... */
}
else if (int.class.isAssignableFrom(componentType)) {
/* ... */
}
else if (long.class.isAssignableFrom(componentType)) {
/* ... */
}
else if (short.class.isAssignableFrom(componentType)) {
/* ... */
}
/* No else. No other primitive types exist. */
}
else {
/* Do something with Object[] here. */
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14098 次 |
| 最近记录: |