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



我有以下类:

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]);
        }

    }
}

我创建如下对象:

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);
    }
}

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

感谢

您需要阅读关于反射的教程,例如查看此教程。

访问字段:

Class.getDeclaredField(String name)

访问方法:

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

我想你想问的是,如何让"obj"看起来像你所知道的IntArrayManipulation。

答案是铸造:

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

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

IntArrayManipulation object = new IntArrayManipulation();

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

最新更新