Java反射机制
来源:互联网 发布:琼恩 龙母 知乎 编辑:程序博客网 时间:2024/06/05 06:28
Java反射机制
目标
1.理解Class类2.理解Java的类加载机制3.学会使用ClassLoader进行加载4.理解反射机制5.掌握Constructor、Method、Field6.理解并掌握动态代理
介绍
说实话反射用在编程语言中确实让人很难理解也很抽象。可以这么理解:为了能够动态(运行期)获得类的信息,因此java提供了反射机制。 Java正因为拥有反射机制所以说Java具备动态语言的特性,此动态非动态语言的动态特性。所谓的反射机制就是java语言在运行时拥有一项自观的能力。通过这种能力可以彻底的了解自身的情况为下一步的动作做准备。每个类在JVM中都有且只有一个Class实例对象
方法介绍和使用
获得类对应的Class对象的三种方式
//1、通过Class.forName(全限定名)Class clazz1 = Class.forName("com.xuyi.usemaven.javase.ref.User");//2、通过类的class属性获取Class clazz2 = User.class;//3、通过实例对象的getClass()方法获取User user = new User();Class clazz3 = user.getClass();//备注:以上三种获取Class对象方式中,第一种方式是使用最多的,反射的目的就是为了动态获取,后面两种方式没有体现动态的特性。Class.forName方式通常除了加载类通常还会初始化类,当然可以设置是否需要初始化。
Class对象主要方法
获得属性 //获得属性数组 getFields()&getDeclaredFields() //获得某个具体属性 getField(String name)&getDeclaredField(String name)
获得方法 //获得方法数组 getMethods()&getDeclaredMethods() //获得某个具体方法 getMethod(String name, Class<?>... parameterTypes)& getDeclaredMethod(String name, Class<?>... parameterTypes)
获得构造方法 //获得构造方法数组 getConstructors()&getDeclaredConstructors() //获得某个具体构造方法 getConstructor(Class<?>... parameterTypes)& getDeclaredConstructor(Class<?>... parameterTypes)
备注:通常有Declared修饰的方法表示可以获得private修饰的属性/方法,无Declared修饰的方法通常表示只能获取public修饰的属性/方法。备注:通常由private修饰的属性/方法使用前需要调用setAccessible(true),设置访问属性。
总结
JDK的反射机制在日常开发中我们可能遇到和使用的机会并不多,但是很多的框架设计与实现都是基于反射机制来实现的。基于JDK的动态代理实现就是借助反射机制实现的。理解反射机制比记住Class类下的方法更重要。
0 0
- 【反射】JAVA反射机制
- 【Java】JAVA反射机制
- Java 反射机制[Field反射]
- Java 反射机制[Method反射]
- Java反射机制笔记-反射机制
- java的反射机制
- Java的反射机制
- java反射机制详解!
- Java反射机制
- Java的反射机制
- java 反射机制--侯捷
- java反射机制
- java反射机制
- [候捷]Java反射机制
- java 反射机制
- java 反射机制初探
- 关于Java反射机制
- java反射机制
- 多维数组
- androidstudio更新androidsdk
- com.sun.proxy.$Proxy0 cannot be cast to ** 解决方法
- 基本数据类型值传递和引用数据类型值传递比较
- JSP开发环境的搭建
- Java反射机制
- 安卓访问Https的主要实现
- SLAM视觉词典创建与应用
- ViewPager小结
- 基本的数据类型
- version `GLIBCXX_3.4.21' not found MATLAB
- mybatis学习
- 仿美团登录注册页面
- Android官方推荐使用DialogFragment替换AlertDialog