当前位置: 技术问答>java相关
关于反射的若干问题
来源: 互联网 发布时间:2015-07-05
本文导语: 希望各位高手能帮忙解答,并给出简短的程序以帮助理解,谢谢 1. 什么是反射 2. 反射的用途 3. 反射的优点 4. 反射的缺点 5. Class.forName()的机制,特别是它到底去哪里forName呢? 6. 如果想Class.forName()一个XML配...
希望各位高手能帮忙解答,并给出简短的程序以帮助理解,谢谢
1. 什么是反射
2. 反射的用途
3. 反射的优点
4. 反射的缺点
5. Class.forName()的机制,特别是它到底去哪里forName呢?
6. 如果想Class.forName()一个XML配置文件,那么配置文件的格式应该如何?读取这个配置文件的信息是否要自己写,应该如何写呢?请用代码说明
1. 什么是反射
2. 反射的用途
3. 反射的优点
4. 反射的缺点
5. Class.forName()的机制,特别是它到底去哪里forName呢?
6. 如果想Class.forName()一个XML配置文件,那么配置文件的格式应该如何?读取这个配置文件的信息是否要自己写,应该如何写呢?请用代码说明
|
Thinking in java 第11章运行期类型鉴定
有点长,我只贴出和"反射"相关的内容
RTTI语法
Java用Class对象实现自己的RTTI功能——即便我们要做的只是象造型那样的一些工作。Class类也提供了其他大量方式,以方便我们使用RTTI。
首先必须获得指向适当Class对象的的一个句柄。就象前例演示的那样,一个办法是用一个字串以及Class.forName()方法。这是非常方便的,因为不需要那种类型的一个对象来获取Class句柄。然而,对于自己感兴趣的类型,如果已有了它的一个对象,那么为了取得Class句柄,可调用属于Object根类一部分的一个方法:getClass()。它的作用是返回一个特定的Class句柄,用来表示对象的实际类型。Class提供了几个有趣且较为有用的方法,从下例即可看出:
//: ToyTest.java
// Testing class Class
interface HasBatteries {}
interface Waterproof {}
interface ShootsThings {}
class Toy {
// Comment out the following default
// constructor to see
// NoSuchMethodError from (*1*)
Toy() {}
Toy(int i) {}
}
class FancyToy extends Toy
implements HasBatteries,
Waterproof, ShootsThings {
FancyToy() { super(1); }
}
public class ToyTest {
public static void main(String[] args) {
Class c = null;
try {
c = Class.forName("FancyToy");
} catch(ClassNotFoundException e) {}
printInfo(c);
Class[] faces = c.getInterfaces();
for(int i = 0; i
有点长,我只贴出和"反射"相关的内容
RTTI语法
Java用Class对象实现自己的RTTI功能——即便我们要做的只是象造型那样的一些工作。Class类也提供了其他大量方式,以方便我们使用RTTI。
首先必须获得指向适当Class对象的的一个句柄。就象前例演示的那样,一个办法是用一个字串以及Class.forName()方法。这是非常方便的,因为不需要那种类型的一个对象来获取Class句柄。然而,对于自己感兴趣的类型,如果已有了它的一个对象,那么为了取得Class句柄,可调用属于Object根类一部分的一个方法:getClass()。它的作用是返回一个特定的Class句柄,用来表示对象的实际类型。Class提供了几个有趣且较为有用的方法,从下例即可看出:
//: ToyTest.java
// Testing class Class
interface HasBatteries {}
interface Waterproof {}
interface ShootsThings {}
class Toy {
// Comment out the following default
// constructor to see
// NoSuchMethodError from (*1*)
Toy() {}
Toy(int i) {}
}
class FancyToy extends Toy
implements HasBatteries,
Waterproof, ShootsThings {
FancyToy() { super(1); }
}
public class ToyTest {
public static void main(String[] args) {
Class c = null;
try {
c = Class.forName("FancyToy");
} catch(ClassNotFoundException e) {}
printInfo(c);
Class[] faces = c.getInterfaces();
for(int i = 0; i
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
站内导航:
特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!