我通过反射动态实例化一个对象,方法是将字段名与Map中同名的键匹配。其中一个字段是字符数组(char[]):
private char[] traceResponseStatus;
在plinko迭代器中,我有目标类的类型代码,例如
Collection<Field> fields = EventUtil.getAllFields(MyClass.getClass()).values();
for (Field field : fields)
{
Object value = aMap.get(field.getName());
...
else if (Date.class.equals(fieldClass))
{
其中fieldClass
,例如,是Date
class MyClass
{
private Date foo;
测试fieldClass类型是否为char[]的表达式是什么?
您需要使用的代码是:
(variableName instanceof char[])
instanceof
是一个操作符,返回一个布尔值,指示左边的对象是否为右边类型的实例,即这应该为variable instanceof Object
返回true,除了null,在您的情况下,它将确定您的字段是否为字符数组。
@bdean20的建议是正确的,但是具体的(现在很明显的)解决方案:
if(char[].class.equals(field.getType()))
测试代码:
import java.lang.reflect.Field;
public class Foo {
char[] myChar;
public static void main(String[] args) {
for (Field field : Foo.class.getDeclaredFields()) {
System.out.format("Name: %s%n", field.getName());
System.out.format("tType: %s%n", field.getType());
System.out.format("tGenericType: %s%n", field.getGenericType());
if(char[].class.equals(field.getClass()))
{
System.out.println("Class match");
}
if(char[].class.equals(field.getType()))
{
System.out.println("Type match");
}
}
}
}
输出:<>之前名称:myChar类型:类[C]GenericType:类类型匹配 您要找的是
else if (traceResponseStatus instanceof char[])