Java反射机制
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。
通俗地说,反射机制就是可以把一个类,类的成员(函数,属性),当成一个对象来操作。
反射需要Java高级应用,同时,也是Java框架的基础。了解反射机制有助于理解框架底层的运行规则。
Class类
先了解几个概念。
-
在面向对象的世界里,万事万物皆对象。
在Javau世界中,有两样东西不是对象,其一是普通数据类型(但是有包装类作为弥补),其二就是Java中以静态标识的东西。
所以,在面向对象的世界里,万事万物皆对象。而类是也对象,类是Java.lang.class类的实例对象。 -
那么,该怎么表示呢?我们用一段代码来演示。
public class ClassDemo{ public static void main(String[] args) { //Foo的实例对象如何表示 Foo foo1 = new Foo(); //foo1就表示出来了,它是Foo类的实例对象。 //那么Class类的实例对象,如何表示呢? //任何一个类都是Class 的实例对象,Clss类的实例对象有三种表示方式: //第一种表示方式 · 实际在告诉我们任何一个类都有一个隐含的静态成员变量Class Class c1 = Foo.class; //第二种表达方式,已经知道了该类的对象通过getClass方法 Class c2 = foo1.getClass(); /*c1、c2 表示了Foo类的类类型(class type) * 万事万物皆对象 * 类也是对象,是Class类的实例对象 * 这个对象我们称之为该类的类类型 */ //第三种表达方式 Class c3 = null; c3 = Class.ForName("包名类名"); //我们完全可以通过类的类类型,创建该类的对象实例 //但是前提是需要无参的构造方法 Foo foo = (Foo)c1.newInstance(); } } class Foo{}
文章信息
作者:Byuc
来源:龙渊 - lrach.com
文章版权归作者所有,未经允许请勿转载。