如何在Java中确定字段是否是char[] (char数组)类型



我通过反射动态实例化一个对象,方法是将字段名与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[])

相关内容

  • 没有找到相关文章

最新更新