不兼容的类型找到java.lang.class< capture< ?>>,所需字符、字节、短字符、int

eh57zj3b  于 2021-08-25  发布在  Java
关注(0)|答案(0)|浏览(239)

我正在编写一个模拟类,它可以使用反射(我没有找到反射)根据其类型设置字段值。然后我意识到一个有趣的现象:

public void play(Class c)
        throws NoSuchMethodException, IllegalAccessException, 
               InvocationTargetException, InstantiationException {

    Constructor declaredConstructor = c.getDeclaredConstructor();
    Object o = declaredConstructor.newInstance();
    Field[] fields = c.getDeclaredFields();
    for (Field f : fields) {
        String name = f.getName();
        Class<?> type = f.getType();
        switch (type) { // switch block
            case String.class:
                break;
            default:
                break;
        }
        if (type.equals(String.class)) { // if block
            f.set(o, name);
        } else if (type.equals(Integer.class)) {
            f.set(o, nextInteger());
        }

    }
}
``` `switch` 块给出错误:
不兼容的类型。找到java.lang.class<capture<?>>,必需的字符、字节、短字符、int、字符、字节、短字符、整数、字符串或枚举'
但是 `if` block按预期工作。我想区别在于开关的工作原理是 `==` 如果有 `equals` . 是否可以使用 `switch` ?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题