来自字符串的Java变量类型

时间:2015-06-07 13:28:27

标签: java

这是我的代码

Class<?> clazz;
    try {
        clazz = Class.forName("classes.Pizza");
        Object p2 = clazz.newInstance();
        System.out.println(p2.test);
    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (InstantiationException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

错误是“测试无法解析或不是字段” 我想得到一个包含类名的字符串,并创建一个具有该类型的对象..类似

String x = "Pizza"
x pizza1 = new x();

我该怎么做?

1 个答案:

答案 0 :(得分:2)

您必须将Object转换为Pizza对象:
这也可能导致ClassCastException:

<h1>Bienvenue</h1>
<h2>Je suis un texte en français</h2>
<p>Ceci est un exemple pour gérer les traductions sur un site web</p>

修改 当你不知道它时,你无法访问字段Class<?> clazz; try { clazz = Class.forName("classes.Pizza"); Object p2 = clazz.newInstance(); System.out.println(((Pizza)p2).test); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (ClassCastException e) { e.printStackTrace(); } 。 所以你可以访问该字段:

test

仅受javadoc攻击,未经过测试(在这种情况下不确定异常)