java-------------反射
来源:互联网 发布:公众号文章网源码 编辑:程序博客网 时间:2024/06/04 20:14
package demo;/** * 反射(reflection) * 反射是功能强大且复杂的机制.反射是Java中提供的一种对象动态特性, * 它是一种不能预知未来,但可以驾驭未来的技术.主要应用于一些框架编程中. * * 反射的作用 * 1.反编译 .class-->.java * 2.通过反射机制访问java对象的属性(Field),方法(method),构造器(Constructor) * * * Class类(java.lang.Class) * Java中反射的起点是一个Class对象,每个类都有一个这样的对象,此类 * 类对象会在类加载时创建,存储在堆内存,用于记录方法区中类的结构信息(例如属性信息,方法信息,....). * * 获得Class类对象的三种方法 * 1).类名.Class * 2).实例对象.getClass() * 3).Class.forName("包名.类名") * * * Constructor 构造器 * Constructor getConstructor(Class[] params) -- 获得使用特殊的参数类型的公共构造函数, * Constructor[] getConstructors() -- 获得类的所有公共构造函数 * Constructor getDeclaredConstructor(Class[] params) -- 获得使用特定参数类型的构造函数(与接入级别无关) * Constructor[] getDeclaredConstructors() -- 获得类的所有构造函数(与接入级别无关) * * Filed 属性 * Field getField(String name) -- 获得命名的公共属性 * Field[] getFields() -- 获得类的所有公共属性 * Field getDeclaredField(String name) -- 获得类声明的命名的属性 * Field[] getDeclaredFields() -- 获得类声明的所有属性 * * Method 方法 * Method getMethod(String name, Class[] params) -- 使用特定的参数类型,获得命名的公共方法 * Method[] getMethods() -- 获得类的所有公共方法 * Method getDeclaredMethod(String name, Class[] params) -- 使用特写的参数类型,获得类声明的命名的方法 * Method[] getDeclaredMethods() -- 获得类声明的所有方法 * * * */public class ReflectDemo { public static void main(String[] args) throws ClassNotFoundException{//获得类的加载器(扩展知识点):负责将类读到内存ClassLoader loader=Thread.currentThread().getContextClassLoader();System.out.println(loader);System.out.println(loader.getParent());System.out.println(loader.getParent().getParent());//静态方式构建实例对象(//前提必须知道有这么一个类)//Point p0=null;Point p1=new Point();Class<?> c1=p1.getClass();Class<?> c2=Point.class;Class<?> c3=Class.forName("demo.Point");//获得c3对象对应的类加载器(AppClassLoader)//System.out.println(c3.getClassLoader());System.out.println(c1==c2); //trueSystem.out.println(c2==c3); //true}}class Point{//Point.class(字节码文件)private int x;private int y;}/*扩展:了解类加载器及类的加载机制? 1)Bootstrap ClassLoader (启动类加载器) 2)ExtClassLoader(扩展类加载器) 3)AppClassLoader(应用类加载器) 4)自定义类加载器(场景,及实现)例如 class TeduClassLoader extends ClassLoader{}*/
阅读全文
0 0
- 【反射】JAVA反射机制
- JAVA 反射
- java 反射
- Java反射
- java反射
- java反射
- JAVA反射
- java 反射
- Java 反射
- java 反射
- Java反射
- java反射
- JAVA 反射
- java 反射
- Java反射
- java反射
- java 反射
- java 反射
- 如何优化tomcat配置(从内存、并发、缓存3个方面)优化
- Mongodb 锁
- ansible tower 3.2.x 企业版无限hosts
- 文件上传和下载
- STM32时钟树分析
- java-------------反射
- window共享与ftp区别
- [微信小程序入门-1]注册小程序帐号
- Leetcode 算法习题 第十四周
- java中的==、equals()、hashCode()源码分析
- Mediaplay 的理解 与使用方法
- 第十四周 【项目1
- docker 私有库registry+镜像管理平台humpback
- Python神经网络识别手写字体