浏览 9434 次
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2007-11-14
首先看看Class,反射的核心类,所有的操作都是围绕该类来生成的,Class类十分的特殊,和其他的类一样继承与Object类,其实例用来表达java在运行时的classes和interface ,也用来表达enum、array、primitive Java types(boolean, byte, char, short, int, long, float, double)以及关键字void。当一個class被加载,或当类加载器(class loader)的defineClass()被JVM 调用,JVM 便自动的产生一個Class object实例。 获得Class的途径可以有以下几种: ------1. 运用getClass() 注:每个class 都有此函数 String str = "abc"; Class c1 = str.getClass(); ------2.运用etSuperclass() Class.getSuperclass(); Button b = new Button(); Class c1 = b.getClass(); Class c2 = c1.getSuperclass(); -----3. 运用static 方法 Class.forName() Class c1 = Class.forName ("java.lang.String"); Class c2 = Class.forName ("java.awt.Button"); Class c3 = Class.forName ("java.util.LinkedList$Entry"); Class c4 = Class.forName ("I"); Class c5 = Class.forName ("[I"); ------4. 运用 .class 語法 Class c1 = String.class; Class c2 = java.awt.Button.class; Class c3 = Main.InnerClass.class; Class c4 = int.class; Class c5 = int[].class; -----运用 primitive wrapper classes 的TYPE 语法 Class c1 = Boolean.TYPE; Class c2 = Byte.TYPE; Class c3 = Character.TYPE; Class c4 = Short.TYPE; Class c5 = Integer.TYPE; Class c6 = Long.TYPE; Class c7 = Float.TYPE; Class c8 = Double.TYPE; Class c9 = Void.TYPE; Java Reflection中常用的函数使用方法如下: java 代码
程序运行结果如下: java 代码
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-01-27
最近做项目才发现自己对于反射几乎是一窍不通,急需恶补。
楼主有没有好的文章可以介绍一下?惭愧ing.... |
|
返回顶楼 | |
发表时间:2008-01-28
推荐一本Reflection In Action吧, 好像是04年的说, 内容不错, 平时用的不多, 但讲原理还是很有帮助的
|
|
返回顶楼 | |
发表时间:2008-06-16
关键字:
Package class Modifier field Method Proxy Array 基本这几个都能说出来 反射基本没问题了 |
|
返回顶楼 | |
发表时间:2008-09-27
如果手头有 <<java编程思想>>的话, 可以看一下它里面对reflection的讲解,个人感觉已经在日常的编程中,应该够用的了...
|
|
返回顶楼 | |
发表时间:2008-10-24
daminggege 写道 推荐一本Reflection In Action吧, 好像是04年的说, 内容不错, 平时用的不多, 但讲原理还是很有帮助的
这本书是什么出版社出版的啊? 在网上搜索了一下,没有找到相关的资料。 有没有电子版的呢? |
|
返回顶楼 | |
发表时间:2008-10-24
问一个反射的问题,有没有什么办法可以获得方法的参数名称,这个问题在C#中是能够得到的。
|
|
返回顶楼 | |