如何访问类的动态创建的Object的方法和属性

时间:2013-11-29 11:49:54

标签: java class object reflection

我有以下课程:

package anto.com.basic;

public class IntArrayManipulation {
    public static void changeMe(int valueArray[]){
        valueArray[4]=5;

        for (int i = 0; i < valueArray.length; i++) {
            System.out.println(" in method : Ref : "+i+ "Value : "+valueArray[i]);
        }
    }
    public static void main(String[] args) {
        int value[] = new int[5];

        value[0] = 1;
        value[1] = 2;
        value[2] = 3;
        value[3] = 4;

        for (int i = 0; i < value.length; i++) {
            System.out.println(" main Ref : "+i+ "Value : "+value[i]);
        }

        changeMe(value);

        for (int i = 0; i < value.length; i++) {
            System.out.println(" in main : after changeMe called Ref : "+i+ "Value : "+value[i]);
        }


    }

}

我创建了Object,如下所示:

package anto.com.basic;

public class CreateObject {
    public static void main(String[] args) throws ClassNotFoundException {
        String className = "anto.com.basic.IntArrayManipulation";
        Object obj = Class.forName(className);
    }
}

到目前为止,我没有遇到任何问题。但是如何访问创建的对象中可用的方法和属性?

由于

2 个答案:

答案 0 :(得分:1)

您需要阅读有关反思的教程,例如检查this

Accessing fields

Class.getDeclaredField(String name)

Accessing Methods

Class.getDeclaredMethod(String name, Class<?>... parameterTypes)

答案 1 :(得分:0)

我认为您的意思是如何使“obj”看起来像您知道的IntArrayManipulation。

答案就是施展它:

IntArrayManipulation obj = (IntArrayManipulation) Class.forName(className);

但是,我有点怀疑你为什么要以这种方式通过反射来创建对象。除非你有充分的理由,否则你应该这样做:

IntArrayManipulation object = new IntArrayManipulation();

......我怀疑你可能并不是说所有这些方法都是静态的。