A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wangpan 中级黑马   /  2013-6-21 18:50  /  3082 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 孙百鑫 于 2013-6-27 07:43 编辑

如题,这两个方法都可以获取一个Class 对象,有什么区别?

评分

参与人数 1技术分 +1 收起 理由
孙百鑫 + 1 神马都是浮云

查看全部评分

8 个回复

倒序浏览
getNamepublic String getName()以 String 的形式返回此 Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称。 如果此类对象表示的是非数组类型的引用类型,则返回该类的二进制名称,Java Language Specification, Second Edition 对此作了详细说明。
如果此类对象表示一个基本类型或 void,则返回的名字是一个与该基本类型或 void 所对应的 Java 语言关键字相同的 String。
如果此类对象表示一个数组类,则名字的内部形式为:表示该数组嵌套深度的一个或多个 '[' 字符加元素类型名。元素类型名的编码如下:
Element Type Encoding
boolean
Z
byte
B
char
C
class or interface
Lclassname;
double
D
float
F
int
I
long
J
short
S
类或接口名 classname 是上面指定类的二进制名称。
示例:
String.class.getName()     returns "java.lang.String" byte.class.getName()     returns "byte" (new Object[3]).getClass().getName()     returns "[Ljava.lang.Object;" (new int[3][4][5][6][7][8][9]).getClass().getName()     returns "[[[[[[[I"

返回:此对象所表示的类或接口名。getClasspublic final Class<?> getClass()返回此 Object 的运行时类。返回的 Class 对象是由所表示类的 static synchronized 方法锁定的对象。 实际结果类型是 Class<? extends |X|>,其中 |X| 表示清除表达式中的静态类型,该表达式调用 getClass。 例如,以下代码片段中不需要强制转换:
Number n = 0;
Class<? extends Number> c = n.getClass();


返回:表示此对象运行时类的 Class 对象。另请参见:The Java Language Specification, Third Edition (15.8.2 Class Literals)

评分

参与人数 1技术分 +1 收起 理由
孙百鑫 + 1 很给力!

查看全部评分

回复 使用道具 举报
一个java.lang.Class对象代表了Java应用程序在运行时所加载的类或接口实例,也就是说被加载的类在JVM中以Class的实例存在,Class对象由JVM自动产生。通过Object的getClass()方法来获取每一个对象对应的Class对象,或的Class对象之后可以用Class对象上的方法取得类的信息。
回复 使用道具 举报
浩临天下 发表于 2013-6-21 19:07
一个java.lang.Class对象代表了Java应用程序在运行时所加载的类或接口实例,也就是说被加载的类在JVM中以Cl ...

谢谢你的解答哦!我问的是,什么情况下使用Object的getClass()方法?什么情况下使用Class.forName方法?因为它们获得的都是Class对象
回复 使用道具 举报
万琪 发表于 2013-6-21 18:56
getNamepublic String getName()以 String 的形式返回此 Class 对象所表示的实体(类、接口、数组类、基本 ...

谢谢你的解答哦!我问的是,什么情况下使用Object的getClass()方法?什么情况下使用Class.forName方法?因为它们获得的都是Class对象
回复 使用道具 举报
wangpan 发表于 2013-6-21 19:14
谢谢你的解答哦!我问的是,什么情况下使用Object的getClass()方法?什么情况下使用Class.forName方法? ...

通过每个对象都具备的方法getClass来获取。必须要创建该类对象,才可以调用getClass方法。
使用的Class类中的方法,静态的forName方法。指定什么类名,就获取什么类字节码文件对象,这种方式的扩展性最强,只要将类名的字符串传入即可。
回复 使用道具 举报
getClass()是用于对象     Class.forName用于获取一个类的字节码,可以参考张老师讲"方法反射"那一集"调用其他类中的main方法"中有用到class.forName
回复 使用道具 举报
楼主您好。我已将您的帖子改成已解决。如果帖子发布长时间没加分。及时联系我。以免漏分的情况发生{:soso_e100:}
回复 使用道具 举报
孙百鑫 发表于 2013-6-27 07:43
楼主您好。我已将您的帖子改成已解决。如果帖子发布长时间没加分。及时联系我。以免漏分的情况发生{:soso_e ...

好的,谢谢~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马