1.java中的反射机制就是将磁盘上的任何类加载到内存中
有三种方法
(一) 类名.class
(二)new 类名.getClass();
(三) Class.forName("类的完整路径");
返回值类型都是Class
2.创建类对象。
(一)通过无参的构造方法
Construct s=反射类.getConstruct(null); //只能得到public类型的构造方法 ,想要得到private修饰的构造方法使用getDeclreadConstruct();
类名 p=(类名)s.newInstance(null);
(二)通过有参的构造方法
Construct s1=反射类.getConstruct(参数类型.class);
类名 p=(类名)s1.newlnstance("参数类型对应的值"); 基本类型也可以 .class
3.反射类的方法
Method method=反射类.getMethod("方法名不带括号",参数没有时写null);
method.invoke(类对象(实例类),参数);
一个特殊的反射类的方法
部分代码展示
Class class=Class.forName("cn.itlaobing.one.Person");
Construct c=class.getDeclreadConstruct(Int.class,String.class);
Person kenan=(Person)c.newlnstance(18,"柯南");
//调用Person中的eat方法,参数类型为InputStream ,方法必须用引号引起来
Method method=kenan.getDeclreadMethod("eat",InputStream.class);
//eat方法不是public权限的所以暴力反射
method.setAccessible(true);
//启动方法
method.invoke(kenan,new FileInputStream("person路径")); //如果调用静态的方法时候,对象可以省略,用null代替
反射类的main方法
Class class=Class.forName("cn.itlaobing.one.Person");
Construct c=class.getDeclreadConstruct(Int.class,String.class);
Person kenan=(Person)c.newlnstance(18,"柯南");
Method method=kenan.getDeclreadMethod("main",String[].class);
method.invoke(null,[Object]new String{"aa","bb"});
4.反射字段
Class class=Class.forName("cn.itlaobing.reflect.Person");
Filed f=class.getFiled("name");
//获取字段的值
Object obj=f.get("实体类");
本文深入讲解Java反射机制的原理及应用,包括类加载方式、创建类对象的不同方法、调用方法与字段的具体步骤,并附有代码示例。
4011

被折叠的 条评论
为什么被折叠?



