反射(一)
什么是反射?
类加载之后,堆内存中会产生一个Class类型的对象(一个类只有一个Class类型对象,这个对象是提供给外界访问对应类的接口),该对象包含了完整的类结构信息,就像一面镜子,通过这个对象可以看到类的结构。
反射能做什么?(皆指的是运行期间)
-
判断任意对象所属的类
-
构造任意一个类的对象
-
调用任意一个类的方法和属性
-
获取类的注解
-
生成动态代理
…
如何获取Class类实例?(以Person类为例)
-
已知具体的类,通过class属性获取
Class a = Person.class;
-
已知某个类的对象,通过getClass()方法获取
Class a = person.getClass();
-
已知类的全限定名,通过Class类的静态方法forName()获取
Class a = Class.forName("demo.Person");
-
基本内置类型的包装类可以用Type属性获取
Class a = Integer.Type;
如有错误或不足之处,非常欢迎指正、讨论