Java反射是很重要的一部分内容。许多框架都是基于Java反射机制加上各种设计模式,比如常用的工厂模式,代理模式等,来实现框架强大的功能。
class / interface的数据类型是Class,class是Java关键字而Class是一种类型(Type)。
Class是什么?怎么创建?
JVM会为每一个加载的class文件创建Class类型的实例,相比于普通的类型,Class的构造方式是private的,我们没有办法手动创建Class实例,Class实例是由JVM内部创建的,我们只能获取。
常用的String类的Class实例的内部字段如下:
字段 | 值 |
---|---|
name | “java.lang.String” |
package | “java.lang” |
super | java.lang.Object |
interface | java.io.Serializable, Comparable, CharSequence |
field | value[],hash,… |
method | indexOf,… |
通过Class实例获取信息的方法称作反射。
怎么获取Class?
有三种方法获取String的Class,以String为例:
Class c1 = String.class;
Class c2 = "123".getClass();
Class c3 =