JAVA动态性——反射机制(一:概念及用途及Type接口)
1. 相关概念:
指的是可以于运行时加载、探知、使用编译期间完全未知的类。
程序在运行状态中,可以动态加载个只有名称的类,对于任意一个已加载的类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意_个方法和属性
加载完类之后,在堆内存中,就产生了一个 Class类型的对象(一个类只有—个Class对象),这个对象就包含了完整的类的结构信息我们可以通过这个对象看到类的结构。这个对象就像一面镜子,透过这个镜子看到类的结构,所以,我们形象的称之为:反射
2. 反射机制的常见用途:
动态加载类、动态获取类的信息(属性、方法、构造器)
动态构造对象
动态谓用类和对象的任意方法、构造器
动态调用和处理属性
获取泛型信息
处理注解
3. 为了了解JAVA的反射机制,我们首先要了解一下Type接口:
Type是Java编程语言中所有类型的通用超级接口。
包括:
raw types(原始类型,包括类,枚举,接口,注解,数组(但不包括泛型数组)),
parameterized types(参数化类型,如Set<String>,Map<String,String>,Class<?>),
array types(泛型数组和参数类型数组,如T[],List<String>[]),
type variables(类型变量,如T,K,V) and
primitive types(基本类型,如boolean,char,byte,short,int,long,float,double)
其中关于Class类:
java.lang
Class Class<T>
参数类型
T - 由此类对象建模的类的类型。 例如,String.class的类型是Class<String> 。
如果正在建模的类是未知的,请使用Class<?> 。
public final class Class<T>
extends Object
implements Serializable, GenericDeclaration, Type, AnnotatedElement
Class类的类表示正在运行的Java应用程序中的类和接口。
可以表示为Class对象的各种类型:
作者:Baret H ~
来源:CSDN