首页 > 代码库 > 反射机制的理解

反射机制的理解

以前学过很长时间反射机制,很是不理解?今天终于看到一本书讲的很详细。

所有反射机制都是通过一个类叫做Class来实现:

让我看看书上是怎么介绍的

Class

Class是java.lang包中的类,该类的实例用来封装对象运行时的状态。当一个类被加载且创建对象时,

和该类相关的一个类型为Claas的对象就会自动创建。Class类本身不提供构造方法,因此,不能使用new来构造对象

任何对象调用getClass()方法都可以获取和该对象相关的一个Class对象看,当然也可以有其他方法得到对象。

String getName()返回类的名字

Constructor []getDeclaredConstructors()返回类的全部构造方法

Field []getDeclaredFields()返回类的全部成员变量。

Method []getDeclaredMethods()返回类的全部方法

// 这里先介绍一下为什么这个,就是所有类都有成员变量,Java中封装成一个类,同理构造方法等等。

Class具有2个功能

前面已经说过了,重点介绍下,使用Class对象实例化一个对象

尤其这个方法一直困扰很久,在这里将会变得九霄云散。

Class.forName(String classname)throws ClassNotFoundException

这个是通过反射机制创建对象实例

通常我们是这样的做到

类 对象名=new 类();

以上两个方法等价,只不过一个是反射机制,可能大家不是很理解。


反射机制主要用到框架中实例化对象。

这里举个例子实例化。

Class Rect

{

double width,height,area;

public double getArea()

{

area=height*width;

return area;

}

}

public class Example

{

public static void main(String argss[])

{

try

{

Class cs=Class.forName("Rect");

Rect rect=(Rect)cs.newInstance()//这里该类有无参构构造方法才可以调用。不然程序会报错。

rect.area()

}

catch(Exception e)

{

}

}

}

主要是框架中服务器可能会调用,这个地方都是隐藏的,所以程序员学的时候感到很崩溃,今天这个问题,无疑惑可存。

本文出自 “简答生活” 博客,请务必保留此出处http://1464490021.blog.51cto.com/4467028/1922889

反射机制的理解