本帖最后由 lizhichao 于 2015-7-28 18:47 编辑
Class类的获取
1: Class.Forname();
2: Person.class
3: P.getClass();
Class方法
1 newInstance
2 getConstrutor();
3 Field getDeclaredField("name");//暴li获取字符段
4 Field getField(" ");获取字符段
Construtor(XX.class,XX.class);
newInstance(xx,xx);
----------------------------------------------
Field
构造Field("name");
set(对象,"");
setAccessible(true);去掉访问权限;
Class 字节码对象
一 ‘关于对象构造(实例化)
方法
1,newinstance();
返回空参的构造的对象(吧反射的对象实例化),注意需要进行一次强 转。
2.getConstructor(String.class,int,class);
Constructor
方法
1 对应的对象 newInstance("张三",23);虚要强转
二关于对象字段获取与改变
Class
方法1:
getField
Field方法
1set(Person," ");
三关于方法
Class
方法
getMethod(“方法名”,<>.class);
Method
invoke(对象):空参的方法:
/**
* @param args
* 反射
* 反射获取的三种方式
* Class.forName()读取配置文件
* Person.class当作锁对象
* p.getClass()判断是否是同一个字节码对象
* @throws ClassNotFoundException
*/
public static void main(String[] args) throws ClassNotFoundException {
Class clazz1 = Class.forName("cn.itcast.bean.Person"); //第一种Class.forName获取
Class clazz2 = Person.class; //第二种字节码对象获取
Person p = new Person();
Class clazz3 = p.getClass(); //第三种通过对象反向获取
System.out.println(clazz1 == clazz2);
System.out.println(clazz3 == clazz2);
}
}
Class<?> cla = Class.forName("it.cn.Person");
Person person = (Person)cla.newInstance();
System.out.println(person);
Field f = cla.getDeclaredField("name");
f.setAccessible(true);
f.set(person,"nihao");
System.out.println(person);
没有案例如果需要我会发给你
|