调用类的私有构造方法与成员方法
1.首先创建一个Dog类
public class Dog {
//无参构造方法
private Dog(){
System.out.println("叫唤");
}
//带参的构造方法
private Dog(String str){
System.out.println("叫唤:"+str);
}
//成员方法
private void run(String name){
System.out.println("跑起来吧!" + name);
}
}
2.在一个test类中通过反射来调用类的私有构造方法和成员方法
public static void main(String[] args) {
//调用类的私有构造方法与成员方法
try {
//1.获取类
Class<?> forName = Class.forName("D0801.Dog");
//2.1获取无参构造方法
Constructor<?> cs1 = forName.getDeclaredConstructor();
cs1.setAccessible(true);
//2.2获取带参的构造方法
Constructor<?> cs2 = forName.getDeclaredConstructor(String.class);
cs2.setAccessible(true);
//3.实例化对象
Object obj1 = cs1.newInstance();
Object obj2 = cs2.newInstance("Tom");
//4.获取私有方法
Method md = forName.getDeclaredMethod("run",String.class);
md.setAccessible(true);
md.invoke(obj1, "Tom");
} catch (Exception e) {
e.printStackTrace();
}
}