我有一个对象 Field 字段
。
我想检查 field
是 Foo
类型的对象还是数组:Foo[]
。
伪代码:
if field.getType() is Foo || field.getType is Foo[]
这可能吗?
我试过了
if (field.getType().isArray())
// do something
但这只允许我检查 field
是否是一个数组。
相反,这样做只会检查它是否是 Foo
的对象
if (Foo.class.isAssignableFrom(field.getType())
// do something
知道怎么做吗?
谢谢。
最佳答案
这是我曾经用过的一些代码,用于处理 Java 中所有基本类型的数组。由于它们不扩展 Object 类,因此对 Object[] 的 instanceof 检查是不够的。
/* 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. */
}
}
关于java - 如何检查一个对象是否是某种类型的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11107812/