如何使用字符串调用类

时间:2013-10-04 18:26:34

标签: java string class

大家好,我想知道如何使用字符串项来调用类,例如

class A {
    String[] des = { "hi" };
}

class Example {
    public static void main(String[] args) {
        String[] className = { "A", "B" };
        System.out.println(className.des[0]); // i wanted to call des array in
                                              // a class with index equal to 0
    }
}

从上面你可以解释我希望在运行时将字符串内容用作类调用者。是否有可能..(我必须使用String)

2 个答案:

答案 0 :(得分:0)

您的代码没有多大意义,因为des不是String数组className的字段。但是,看起来您正在尝试访问类A中声明的字段,只需将类的名称作为String值即可。由于des是一个实例字段,因此您需要使用A的实例。你可以这样做:

A a = (A) (Class.forName("A").newInstance());
System.out.println(a.des[0]);

您必须添加代码来处理可能引发的潜在异常。另请注意,Class.forName的参数必须是类的全名,因此如果A是包的一部分(比如com.example),那么它必须是{{} 1}}。

以下是如何将Sotirios Delimanolis和我的代码组合成一个完整的工作示例:

Class.forName("com.example.A")

答案 1 :(得分:0)

Use Ted Hopp's solution.

我会后悔向你展示这个,但仅仅是为了踢球

String className = "A"; // use the fully qualified name
Class clazz = Class.forName(className);
Field field = clazz.getDeclaredField("des");
field.setAccessible(true);
A a = new A(); // if you don't know the actual type, you can declare it as Object and get it from somewhere
String[] des = (String[])field.get(a);
System.out.println(des[0]);

显然,相应地进行所有异常处理。