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

java反射知识点总结

2016-04-01 09:16 639 查看
获取字节码文件

Class clazz1 = Class.forName("com.heima.bean.Person");
Class clazz2 = Person.class;
Person p = new Person();
Class clazz3 = p.getClass();


获取构造方法

Class clazz = Class.forName("com.heima.bean.Person");
Constructor c = clazz.getConstructor(String.class,int.class);
Person p = (Person) c.newInstance("顾雨磊",26);
Person p1 = (Person) c.newInstance("周红伟",28);
Person p2 = (Person) c.newInstance("谷晓蕾",20);


修改成员变量

Class clazz = Class.forName("com.heima.bean.Person");
Constructor c = clazz.getConstructor(String.class,int.class);
Person p = (Person) c.newInstance("顾雨磊",28);
/*Field f = clazz.getField("name");
f.set(p, "李四");*/
Field f = clazz.getDeclaredField("name");
f.setAccessible(true);
f.set(p, "周红伟");
System.out.println(p);


成员方法

Class clazz = Class.forName("com.heima.bean.Person");
Constructor c = clazz.getConstructor(String.class,int.class);
Person p = (Person) c.newInstance("周大伟",22);
Method m = clazz.getMethod("eat");
m.invoke(p);

Method m1 = clazz.getMethod("eat", int.class);
m1.invoke(p, 5);


test1

Class clazz = Class.forName("java.util.ArrayList");
Method m = clazz.getMethod("add", Object.class);
m.invoke(list, "asd");
System.out.println(list);


setProperty

public void setProperty(Object obj ,String propertyName ,Object value) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException{
Class clazz = obj.getClass();
Field f = clazz.getDeclaredField(propertyName);
f.setAccessible(true);
f.set(obj, value);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: