我有以下类:
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();
我怀疑你可能也不是说所有这些方法都是静态的。