请问java中有没有不使用forName和实例化对象就能直接得到某个类的Class对象的方法呀?
通过判断类的是否是某个类的子类或者是否实现了某个接口,可以在程序里区别对待不同的对象。比如,
做一个显示表格的类,对于类型为字符串的单元格,可以简单调用drawString来显示,但对于某些自定义类的对象,比如说,定义一个接口StringRetrieveable,如果该对象实现了这个接口,则可以调用该接口的getString方法,获得字符串,然后再调用drawString方法显示。现在的问题是,我能够得到这个对象的Class,但不知道怎么写能够把这个Class和StringRetrieveable进行比较以判断该对象是否实现了这个接口。
下面是我已经知道的方法:
1. 使用forName("StringRetrieveable")获得接口StringRetrieveable的Class对象,调用该对象的isInstance,把单元格对象作为参数传递进去。但forName调用看样子是一种运行时获取Class对象的方法。效率上可能稍微有些损失。如果有像C或C#里面typeof关键字的方法就好了。
2. 使用异常机制,强制将单元格转换成StringRetrieveable接口,如果抛出异常,就在catch块内作相应处理。但这种变态使用异常的方法是在不怎么样,效率也不会高的。
请问java里面有没有类似typeof的关键字或什么别的机制,能够在编译时刻就能在程序里指定某个Class对象呢?
我这里先谢谢了。
做一个显示表格的类,对于类型为字符串的单元格,可以简单调用drawString来显示,但对于某些自定义类的对象,比如说,定义一个接口StringRetrieveable,如果该对象实现了这个接口,则可以调用该接口的getString方法,获得字符串,然后再调用drawString方法显示。现在的问题是,我能够得到这个对象的Class,但不知道怎么写能够把这个Class和StringRetrieveable进行比较以判断该对象是否实现了这个接口。
下面是我已经知道的方法:
1. 使用forName("StringRetrieveable")获得接口StringRetrieveable的Class对象,调用该对象的isInstance,把单元格对象作为参数传递进去。但forName调用看样子是一种运行时获取Class对象的方法。效率上可能稍微有些损失。如果有像C或C#里面typeof关键字的方法就好了。
2. 使用异常机制,强制将单元格转换成StringRetrieveable接口,如果抛出异常,就在catch块内作相应处理。但这种变态使用异常的方法是在不怎么样,效率也不会高的。
请问java里面有没有类似typeof的关键字或什么别的机制,能够在编译时刻就能在程序里指定某个Class对象呢?
我这里先谢谢了。
...全文
相关推荐
JAVA反射机制-Class类-Class对象的获取.pdf
JAVA反射机制-Class类-Class对象的获取.pdf
Java中Class对象详解.docx
Java中Class对象详解
Class.forName
Class.forName(xxx.xx.xx) 返回的是一个类 Class.forName(xxx.xx.xx);的作用是要求JVM查找并加载指定的类,也就是说JVM会执行该类的静态代码段
温习java反射,让你对反射有全新的认识(csdn)————程序.pdf
温习java反射,让你对反射有全新的认识(csdn)————程序
在Java的反射中,Class.forName和Class
在Java的反射中,Class.forName和ClassLoader的区别共4页.pdf.zip


Java SE

