Java 反射学习笔记
反射
指程序可以访问、检测和修改它本身状态或行为的一种能力
Java 通过字节码反射出类中的信息,包含:类、属性、方法、构造、继承、实现
在 JDK 中java.lang包与java.lang.reflect包下
一. Class 类
在反射中 Class 代表一个类,也叫类类型,是 Java 数据类型中的一种
创建方式
- 
Class.forName("完整路径")
- 
类名.class
- 
对象名.getClass()
常用方法
- 
getName():获取类的完整路径
- 
getSimpleName():获取类的名称
- 
newInstance():创建类的新实例,就是新对象
二. Java 中的数据类型(☆)
- 
基本数据类型(8种) 
- 
引用类型(数组和对象) 
- 
枚举 
- 
类类型 
三. Java 中创建对象方式(☆)
- 
new关键字 
- 
反序列化 
- 
反射 
- 
克隆 
四. Constructor
在 Java 反射中 Constructor 的一个实例代表一个类的构造方法,可以通过类类型获取
创建方式
- 
class对象.getConstructors():获取所有的构造方法,返回一个构造方法数组
- 
class对象.getConstructor():获取指定构造方法
常用方法
- 
getName():获取构造方法的名称
- 
getParameterTypes():获取构造方法参数列表
- 
getModefiers():获取构造方法访问修饰符
- 
getExceptionTypes():获取构造方法的异常
- 
newInstance():根据指定的构造方法创建对象
五. Filed
在 Java 反射中 Filed 一个实例代表一个类中的属性
创建方式
- 
getDeclaredFields():获取本类中的所有属性,返回一个属性数组
- 
getDeclaredField(String name):根据名称获取本类中的单个属性
- 
getFields():获取父类、父接口中所有的 public 修饰的属性
- 
getField(String name):根据名称获取父类,父接口中的 public 修饰的属性
常用方法
- 
getName():获取属性名称
- 
getModifiers():获取属性访问修饰符
- 
getType():获取属性数据类型
- 
setAccessible(boolean b):设置私有变量的访问权限,默认为 false
- 
set(Object obj, Object value):给属性赋值
- 
get(Objuct obj):获取属性值
- 
getModifiers():获取该属性的访问修饰符的 int 表示
- 
Modifier.toString(1):根据访问修饰符的 int 值获取相对应的字符串表示
六. Method
在反射中 Method 一个实例代表一个类中的方法
创建方式
- 
Class对象.getDecaredMethods():获取本类中所有的方法
- 
Class对象.getDeclaredMethod(String name,Class<?> paramType):根据方法名称与参数列表获取本类中指定的方法
- 
Class对象.getMethods():获取本类、父类、父接口中的所有方法
- 
Class对象.getMethod(String name,Class<?> paramType):根据方法名称与参数列表获取本类
常用方法
- 
getName():获取方法名
- 
getParameterTypes():获取参数列表
- 
getModifiers():访问修饰符
- 
getReturnType():获取返回值类型
- 
getExceptionTypes():获取异常类型
- 
invoke(Object obj, Object paramValue):执行方法(方法的回调)
七. 注解
注解的定义
- 
@Documented:表示注解文档
- 
public @interface Table{}:表示注解类 定义注解,并不是 interface
- 
@Target(value={ElementType.TYPE}:表示作用范围,作用范围由ElementType指定,常用如下:- 
TYPE 表示作用在类上 
- 
FIELD 表示作用在字段上 
- 
METHOD 表示作用在方法上 
- 
PARAMETER 表示作用在参数列表上 
- 
CONSTRUCTOR 表示作用在构造方法上 
 
- 
- 
@Retention(RetentionPolicy.RUNTIME):指定注解的生命周期,一共三种,通过 RetentionPolicy 定义,具体如下:- 
SOURCE 表示在源码中有效 
- 
CLASS 表示在字节码文件中有效(.class文件) 
- 
RUNTIME 表示在 JVM 运行时有效 
 
- 
注:如果注解里面只有一个 value 属性,可以省略不写,默认就是
value=
注解的获取
- 
Class对象.getAnnotation(Class annotationClass):获取类上的注解
- 
Field对象.getAnnotation(Class annotationClass):获取字段上的注解
- 
Method对象.getAnnotation(Class annotationClass):获取方法上的注解
本文来自博客园,作者:Schieber,转载请注明原文链接:https://www.cnblogs.com/xiqingbo/p/java-21.html

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号