Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中,如何确定字段是否为char[](char数组)类型?_Java_Arrays_Reflection - Fatal编程技术网

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

在Java中,如何确定字段是否为char[](char数组)类型?,java,arrays,reflection,Java,Arrays,Reflection,我正在通过反射动态实例化一个对象,方法是将字段名称与地图中类似的命名键进行匹配。其中一个字段是字符数组(char[]): 在plinko迭代器中,我为目标类上的类型编写了代码,例如 Collection<Field> fields = EventUtil.getAllFields(MyClass.getClass()).values(); for (Field field : fields) { Object value = aMap.get(field.getName()); ..

我正在通过反射动态实例化一个对象,方法是将字段名称与地图中类似的命名键进行匹配。其中一个字段是字符数组(char[]):

在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类型是char[],要测试的表达式是什么?

需要使用的代码是:

(variableName instanceof char[])
instanceof
是一个运算符,它返回一个布尔值,指示左侧的对象是否是右侧类型的实例,即对于
变量instanceof object
而言,除了null以外的所有内容都应返回true,在您的情况下,它将确定您的字段是否为字符数组。

您正在查找的

else if (traceResponseStatus instanceof char[])

@bdean20的dupe建议是正确的,但具体(现在很明显)的解决方案是:

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");
            }
        }
    }
}
输出:

Name: myChar Type: class [C GenericType: class [C Type match 姓名:myChar 类型:C类 GenericType:类[C] 类型匹配
事实上,我需要对我正在填充的内容进行字段类测试(承认,我的问题完全不清楚)。我已经更新了问题,希望能够澄清。现在的问题似乎是重复的:我把问题搞糟了(见上面对@bdean20的评论)。
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");
            }
        }
    }
}
Name: myChar Type: class [C GenericType: class [C Type match