码迷,mamicode.com
首页 > 其他好文 > 详细

getClass()和.class的区别

时间:2017-04-05 10:03:33      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:span   编译器   for   资料   学习   strong   shm   不同   动态加载   

getClass()和.class的区别

在学习反射时想到了这个问题,.getClass()和.class有没有什么区别?
当然,最明显的区别就是.getClass()是一个对象实例的方法,只有对象实例才有这个方法,具体的类是没有的类的Class类实例是通过.class获得的,显然,类没有.getClass()方法
从网上还找到一些其他资料:
1、出现的时期不同:Class.forName()和getClass()是在运行时加载;Class.class是在编译器加载,即.class是静态加载,.getClass()是动态加载。
2、举个例子,Iterator it = s.iterator();得到的it的真正类型是KeyIterator,是Iterator 的子类,按常理来说应该可以执行next()方法,但是值得注意的是,KeyIterator是hashmap的内部类,JAVA给的提示是can not access a member of class java.util.HashMap$KeyIterator with modifiers "public"
从上面的那些例子上也能看出,除内部类外的其他类的应用上.class功能完全等于.getClass()!只是一个是用类直接获得的,一个是用实例获得的

getClass()和.class的区别

标签:span   编译器   for   资料   学习   strong   shm   不同   动态加载   

原文地址:http://www.cnblogs.com/alsf/p/6667080.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!