黑马程序员-学习日记10
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流!
1,反射机制:反射就是把java类中的各种成分映射成相应的java。
2,Java反射的功能
1)可以判断运行时对象所属的类
2)可以判断运行时对象所具有的成员变量和方法
3)通过反射甚至可以调用到private的方法
4)生成动态代理
3,实现Java反射的类
1)Class:它表示正在运行的Java应用程序中的类和接口
2)Field:提供有关类或接口的属性信息,以及对它的动态访问权限
3)Constructor:提供关于类的单个构造方法的信息以及对它的访问权限
4)Method:提供关于类或接口中某个方法信息
注意:Class类是Java反射中最重要的一个功能类,所有获取对象的信息(包括:方法/属性/构造方法/访问权限)都需要它来实现
4,Class类没有公开的构造方法,取而代之的是当java虚拟机载入或者被classloader的方法载入时,会自动被创建出来。
获得Class对象有三种方法:
(1) 类名.class ,例如 System.class;
(2) 对象.getclass(),例如 new Person().getclass();
(3) Class.forName(“类名”);例如,Class.forName(“java.util.Date”);
反射的时候,主要用第三种方法。
5 Field类代表某个类中的一个成员变量,它是反射把类的成员变量封装成的新类。
字节码对象提供两组方法获得Field对象:
getField(String name)/getFields(); //只可访问公共成员变量
getDeclareField(String name)/getDeclareFields(); //可以访问所有变量
6,Method类:代表了类中的一个方法:
1,得到一个类中的所有的方法:Method[] methods = 类名.class.getMethods();
2,得到一个类中的指定的某个方法:Method method = 类名.class.getMethod("方法名",参数.class ...);
3,用反射的方式调用这个方法:method.invoke(对象名,参数...);
当调用静态方法时使用invoke(null,参数....);"http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流!