黑马程序员技术交流社区
标题:
关于获得字节码的问题[已解决]
[打印本页]
作者:
周世阳
时间:
2012-7-29 14:03
标题:
关于获得字节码的问题[已解决]
本帖最后由 周世阳 于 2012-7-29 22:43 编辑
getClass和.class应该是等效的
但是getClass为什么无法获得基本类型的字节码,而.class就可以
例:
Class c1 = char.class -->通过
Class c2 = 'a'.getClass() -->报错
作者:
肖琦
时间:
2012-7-29 17:19
Java中的基本数据类型不是对象,不能调用它的方法。
所以才需要对每一种基本数据类型提供一个包装类,这说明Java还不是一种完全面向对象的语言。
个人感觉,char.class返回的Class<Character>的实例是虚拟机根据"char.class"这个标识分配的,不能说明char具有属性。
作者:
尤洋
时间:
2012-7-29 18:33
.getClass()是一个对象实例的方法,
只有对象实例才有这个方法
,具体的类是没有的。
类的Class类实例是通过.class获得的,而
类没有.getClass()方法
。
除内部类外的其他类的应用上.class功能完全等于.getClass()!只是一个是用类直接获得的,一个是用实例获得的。
如果你希望获得更具体的例子建议你去http://blog.csdn.net/qianzhiyong111/article/details/7320879 看看,图文并茂,而且还谈到了动态加载和静态加载的问题,这方面我也不是很懂就不赘言了,希望能对你有所帮助
作者:
吴立杰
时间:
2012-7-29 20:56
楼主这个问题发现的挺有意思的,其实API已经明确说明了:
getClass()这个方法是Object类的,java中的任何类都是继承Object的,只有你创建了对象,这个对象就可以调用这个方法获取该类运行时的字节码对象。这说明Class这个类也可以创建对象调用它,让我浮想联翩了一小下,结果突然想起来,Class这个类没有构造,哈哈。其实有很多类都是不提供构造的,是有用意的哦
基本的 Java 类型(boolean、byte、char、short、int、long、float 和 double)和关键字 void 也表示为 Class 对象。注意哦,void居然也是Class对象,让我震惊了一小下,哈,多谢楼主的小问题,有发现一个小知识点,看来API有事没事就要看。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2