package com.ygl.reflect;
public class Private {
private String sayName(String name){
return name;
}
}
//*****************************
package com.ygl.reflect;
import java.lang.reflect.Method;
public class Test11 {
public static void main(String[] args) throws Exception {
Private tt=new Private();
Class<?> clazz=tt.getClass();
//可以獲得定義過的對象,也即可以獲得私有的
Method method=clazz.getDeclaredMethod("sayName", new Class[]{String.class});
method.setAccessible(true);//壓制java的預設通路控制的檢查
String str = (String) method.invoke(tt, new Object[]{"ygl"});
System.out.println(str);
}
}
//========================================
package com.ygl.reflect;
public class Private {
private String name="yyy";
public String getName(){
return name;
}
}
//****************************************
package com.ygl.reflect;
import java.lang.reflect.Field;
public class Test12 {
public static void main(String[] args) throws SecurityException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException {
Private p=new Private();
Class<?> clazz=p.getClass();
Field field=clazz.getDeclaredField("name");
field.setAccessible(true);
field.set(p, "ygl");
System.out.println(p.getName());
}
}