JAVA 反射详解以及基础使用
来源:互联网 发布:端口映射和端口转发 编辑:程序博客网 时间:2024/06/05 22:51
最近在学习框架的时候多次遇到了反射这个老朋友,之前虽然学过,但是发现对它的掌握依然不是很好,翻了一书,然后也看了一些博客,有了一些比较形象的认识体会,所以就在这里把这个知识点做一个系统的总结:
1.反射的基本理解
反射时java被视为动态语言的关键。 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。对于正在学习的框架中体现的利用反射的便利性有很大的体会。
反射机制主要提供了一下功能:
①在运行时构造任意一个类的对象
②在运行时获取任意一个类所具有的成员变量和方法
③在运行时调用任意一个对象的方法或者属性
④生成动态代理
2.class 对象的三种获取方式
//class 的初始化
Class clazz =null;
①直接通过类名获取
clazz = Person.class;
②通过对象调用的方法获得
Person a =new Person();
clazz=person.getClass();
③通过全类名的方法获得(这个也是使用的最广泛的一个)
clazz=Class.forname("类名");
//使用Class对象的newInstance()方法实例化//实例化店用的为Person的无参的构造器(也就要求写javabean的时候有无参数的构造函数的存在)Class<Person> clazz=(Class<Person>)Class.forName("类名");Object obj=clazz.newInstance();
关于类加载器的一个主要的方法:
InputStream in=null;
in=this.getClass( ).getClassLoader ( ),getResourceAsStream(“test.properities”); //输入文件应放在src的目录下面。
3.Class类的常用方法
方法名
功能说明
static Class forName(String name)
返回指定类名 name 的 Class 对象
Object newInstance()
调用缺省构造函数,返回该Class对象的一个实例
Object newInstance(Object []args)
调用当前格式构造函数,返回该Class对象的一个实例
getName()
返回此Class对象所表示的实体(类、接口、数组类、基本类型或void)名称
Class getSuperClass()
返回当前Class对象的父类的Class对象
Class [] getInterfaces()
获取当前Class对象的接口
ClassLoader getClassLoader()
返回该类的类加载器
Class getSuperclass()
返回表示此Class所表示的实体的超类的Class
4.Method(Field) 对象
Class 对象获取 Method 的方法:
getDeclaredMethod(String name, Class<?>... parameterTypes)
getDeclaredMethods()
getMethod(String name, Class<?>... parameterTypes)
getMethods()
Method 对象的方法:
invoke(Object obj, Object... args)、
5.Annotation 相关
获取 Annotation 实例:
getAnnotation(Class<T> annotationClass)
getDeclaredAnnotations()
getParameterAnnotations()
6.泛型相关
泛型类型:ParameterizedType
获取实际的泛型类型参数数组:getActualTypeArguments()
- JAVA 反射详解以及基础使用
- 【Java基础】反射详解
- java反射机制基础详解
- java反射机制基础详解
- Java反射机制基础详解
- java反射机制基础详解
- java反射机制基础详解
- Java反射机制基础详解
- Java反射机制基础详解
- 【框架基础】java反射详解
- java反射详解--三分钟学会使用java反射
- Java反射的基础使用
- 黑马程序员-java基础之反射以及反射的常用
- java反射机制基础详解(转)
- 关于java基础--反射机制的详解
- JAVA基础——反射详解
- 【框架基础】:Java反射机制详解(一)
- 【框架基础】:Java反射机制详解(二)
- JTable用法
- Navicat for mysql 下载、安装、连接MySQL操作
- HDU2222(AC自动机入门题)
- CentOS 7 yum 安装 Nginx
- Java练习
- JAVA 反射详解以及基础使用
- 左值和右值的区别(以a++和++a为例)
- HDU 6214 Smallest Minimum Cut (最小割)
- PAT乙级-1001A+B和C (15)
- 一小时上手Numpy
- 思考的救赎(二):三消游戏功能完善
- Git可视化工具SourceTree的使用
- backbone学习第一天
- 3.EmBitz个性化设置