java反射小总结

java反射



一、反射的作用:

PS:Class表示一个类的完全限定名

1、反编译:.class-->.java
2、通过反射机制访问java对象的属性,方法,构造方法等;


二、反射用到的类

java.lang.Class;                
java.lang.reflect.Constructor;
java.lang.reflect.Field;        
java.lang.reflect.Method;
java.lang.reflect.Modifier;


三、反射步骤

 1、反射的三种方式


//方式1:使用类的完全限定名
Class c = Class.forName("com.ui.Emp");

    //方式2:java中每个类型都有class 属性.  
Class c2 = Emp.class;  
//方式3:java每个对象都有getClass() 方法  
Emp e = new Emp();  
Class c3 = e.getClass(); //c3是运行时类 (e的运行时类是Emp)  


2、获取对象
1、调用其构造方法获取对象
Emp e=(Emp)c.newInstance();


3、操作
    1、Class类
 c.getSimpleName(); //获取此Class的类名字
 c.getCanonicalName(); //返回 Java Language Specification 中所定义的底层类的规范化名称。


 c.getModifiers(); //获取此Class的修饰符,数字形式
 Modifier.toString(c.getModifiers()); //获取此属性--修饰符int转String的形式


    2、获取此类所有属性  
Field[] fs = c.getDeclaredFields();
f.getName(); //获取此属性--名字
f.getModifiers(); //获取此属性--修饰符数字形式
f.getType(); //获取此属性--数据类型
f.toString(); //返回一个描述此对象的字符串
Field f = c.getDeclaredField("id"); //获取指定名称属性
f.setAccessible(true); //打开私有属性
f.set(e,"110"); //为e对象的id属性赋值"110"
f.get(e); //获取e对象的id属性


    3、获取此类所有方法
Method[] ms = c.getDeclaredMethods();
m.getName(); //获取方法名字
m.getReturnType(); //获取此方法的返回值类型
m.getParameterTypes(); //返回方法形参类型(返回一个Class数组)
m.getModifiers(); //返回修饰符int形式
m.toGenericString(); //返回一个描述此对象的字符串

m.invoke(e,arg1,arg2,...); //执行e对象上的m代表的方法,后面是参数


    4、获取此类所有构造方法
 Constructor<?>[]cs= c.getDeclaredConstructors();































©️2020 CSDN 皮肤主题: 创作都市 设计师:CSDN官方博客 返回首页