关于java中反射机制的自我理解
2017-10-29 20:54
323 查看
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("实体类");
有三种方法
(一) 类名.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的反射机制,你需要理解这些..
- 关于Java的反射机制,你需要理解这些..
- 关于java反射机制的理解(转自知乎)
- 关于java反射机制的粗略理解
- 关于java反射机制的理解
- (转)关于Java的反射机制,你需要理解这些..
- 关于Java的反射机制,你需要理解这些...
- 关于Java中反射机制的原理理解
- 关于Java的反射机制,你需要理解这些..
- 关于Java的反射机制,你需要理解这些...
- 关于Java的反射机制,你需要理解这些...
- Java学习之反射机制的理解
- Java基本类型包装类的缓存机制的自我理解
- Java关于反射的加深理解
- Java学习之类加载全过程_JVM内存分析_反射机制核心原理_常量池理解
- 关于Java反射机制
- 关于Java反射机制的一个实例
- 深入理解Java:类加载机制及反射
- 对于java 反射机制的理解
- 关于反射机制(反射机制的理解一)