反射机制的理解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了反射机制的理解相关的知识,希望对你有一定的参考价值。
以前学过很长时间反射机制,很是不理解?今天终于看到一本书讲的很详细。
所有反射机制都是通过一个类叫做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
以上是关于反射机制的理解的主要内容,如果未能解决你的问题,请参考以下文章