(重要)Java反射機制(容易理解)
阿新 • • 發佈:2018-12-13
import java.lang.reflect.Method;
class A {
private void cube (int n) {
System.out.println(n * n * n);
}
private void haha (int b) {
System.out.println(b * b);
}
}
class 反射 {
public static void main (String[] args) throws Exception {
Class<?> c = A.class;
Object obj = c.newInstance(); //相當於new A();
//返回類的方法陣列
Method m = c.getDeclaredMethod("cube", new Class[] {int.class});//method修改許可權
Method m2 = c.getDeclaredMethod("haha", new Class[] {int.class});//method修改許可權
m.setAccessible(true); //設定方法cube許可權為可訪問
m.invoke(obj, 4);
m2.setAccessible(true); //設定方法haha許可權為可訪問
m2.invoke(obj,4);
/*
invoke方法可以把方法引數化
invoke(class, method)
比如你Test類裡有一系列名字相似的方法setValue1、setValue2等等
可以把方法名存進陣列v[],然後迴圈裡invoke(test,v[i]),就順序呼叫了全部setValue
*/
}
}