您的位置:首页 > 编程语言 > Java开发

《Java》反射全解

2016-04-12 01:01 621 查看

反射加载

反射加载有三种方法

1.Class clazz= Class.forName(包名.类名); (提示:使用此方法会运行相关类里面的static代码块)

2.Class clazz = 类名.class

3.Class clazz = new 类名().getClass();

反射得到构造方法创建实例

public class Person{
public Person(){
System.out.println("无参");
}
public Person(String name){
System.out.println("有参"+name);
}
private Person(int age){
System.out.println("有参私有"+age);
}
}


得到构造方法

Class clazz = Person.class
Constructor c = clazz.getConstructor(null);//得到无参
Constructor c1 = clazz.getConstructor(String.class);//得到有参
Person p = (Person)c.newInstance(null);//得到person对象
Person p1 = (Person)c.newInstance("");//得到person对象
//得到私有构造方法创建实例
Constructor c2 = getDeclaredConstructor(int.class);
c2.setAccessible(true);//设置:私有可反射(容易的)
Person p2 = (Person)c.newInstance(1);//得到person对象


反射得到方法并运行

public class Person{
public Person(){
}
public void test(){

}
private void test(String name){
System.out.println("私有方法"+name);
}
}


Person p = new Person();
Class clazz = Person.class
Method m = clazz.getMethod("test",null);//得到无参方法
m.invoke(p,null);//调用方法
//得到私有方法
Method m1 = clazz.getDeclaredMethod("test",String.class);
m1.setAccessible(true);//设置:私有可反射(容易的)
m1.invoke(p,"haha");


反射得到字段

都是一个样,这里就不表述了.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java