反射是程序在运行状态下,动态的获取某个类的内部信息的一种操作。例如:类名,包名,所有属性的集合,所有方法的集合,构造方法的集合等。该操作发生在程序的运行时状态,所以编译器管不着有关反射的一些代码,通常只有在运行时才能暴露出程序的内部错误。反射的核心在于‘Class’这个类,本篇将从Class这个类开始介绍有关反射的一些基本的概念,主要内容如下:
获取Class对象
从Class对象中读取字段信息
从Class对象中读取方法信息
获取Class对象中的所有构造方法并使用它们动态创建类对象
反射的一些其他细节
一、获取Class对象
此处的Class是一个具体的类(java.lang.Class),并不是我们自定义一个类时所使用的关键字class。这是一个泛型类,通常有两种方法可以获取该对象。第一种方式,使用类名.class来获取Class对象。
Class<Integer> integerClass = int.class; Class<Double> doubleClass = double.class; Class<Character> characterClass = char.class; ....... Class<Map> mapClass = Map.class; Class<String> stringClass = String.class; Class<Date> dateClass = Date.class; ........
无论是基本数据类型,还是一般的class类型,或是接口类型,都是可以通过.class的方式来获取与之对应的Class对象。第二中获取Class对象的方法是,通过getClass方法,