黑马程序员技术交流社区

标题: 关于getName()方法。求解释下。 [打印本页]

作者: 一碗小米周    时间: 2013-9-17 23:10
标题: 关于getName()方法。求解释下。
本帖最后由 一碗小米周 于 2013-9-18 08:42 编辑
  1. sBuilder.append('(');
  2.                         Class[] clazzParames = con.getParameterTypes();
  3.                         for(Class clazzParame : clazzParames ){
  4.                                 sBuilder.append(clazzParame.getName()).append(',');
  5.                         }
复制代码
请问一下各位,那个getParameterTypes()方法返回的是形参类型,getName()表示以字符串形式返回此构造方法的名称。那么clazzParame.getName()表示的是参数名称吗?getName()表示什么呢?谢谢。

作者: 狼人→浪人    时间: 2013-9-18 00:22
难道getName()不是获取clazzParame 这个对象的名称(此方法用于获取name属性封装后的值)!!???难道还有其他?
作者: kmter    时间: 2013-9-18 00:50
本帖最后由 kmter 于 2013-9-18 01:01 编辑

这种问题可以查API文档信息。或者直接使用输出语句输出字符串内容。
输出的应该是
“第二行con对象表示的构造方法的参数类型所引用的类的二进制名称”
稍微有点拗口,不好意思,不过逻辑还是有的。具体getName()在什么情况下表示什么内容由于篇幅过长还是建议查API理解。
作者: 一碗小米周    时间: 2013-9-18 07:49
狼人→浪人 发表于 2013-9-18 00:22
难道getName()不是获取clazzParame 这个对象的名称(此方法用于获取name属性封装后的值)!!???难道 ...

那么clazzParame表示的是形参类型,那么clazzParam.getName()不应该表示的是形参名?

作者: hanfei2511    时间: 2013-9-18 08:08
public Class<?>[] getParameterTypes()
返回一个Method对象所代表的方法上,按照参数申明顺序排列代表参数类型的Class对象的数组。如果这个方法没有参数,则返回长度为0的数组。

public String getName()
getName以 String 的形式返回此Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称。

Examples:(此例摘自Java api)
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"     //[的个数代表数组嵌合的深度。

所以clazzParame是clazzParames数组中的一个元素,代表con这个方法中参数的类型,而clazzParame.getName()返回的是对应参数的Class对象的名称,例如,如果一个参数类型是String,那么就会返回java.lang.String.






作者: hanfei2511    时间: 2013-9-18 08:11
很抱歉,上个帖子的例子部分显示有问题,现在进行修改一下。
Examples(此例摘自Java api)
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" //[的个数代表数组嵌合的深度。

作者: 第一印象    时间: 2013-9-18 08:39
请问一下各位,那个getParameterTypes()方法返回的是形参类型,getName()表示以字符串形式返回此构造方法的名称。那么clazzParame.getName()表示的是参数名称吗?getName()表示什么呢?谢谢。


1.getParameterTypes()返回的是构造函数的所有形参的类型的数组
2.你说的getName()是说你这个代码里的clazzParame.getName()吗?如果是的话,这个是获取构造函数中参数的类型的名称的字符串形式,比如参数的类型是String类型的,那么会返回java.lang.String
3.比如说有一个类的名称叫ReflectPoint.class,那么ReflectPoint.class.getName()将返回这个类的全路径名称


作者: 一碗小米周    时间: 2013-9-18 08:42
第一印象 发表于 2013-9-18 08:39
请问一下各位,那个getParameterTypes()方法返回的是形参类型,getName()表示以字符串形式返回此构造方法的 ...

恩。谢谢。我想到了。。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2