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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 广驰 中级黑马   /  2012-9-21 21:26  /  1623 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 应广驰 于 2012-9-26 10:41 编辑

使用Class中的getConstructors()并迭代取出的构造函数全都一样,没有参数类型
  1.   Constructor[] constructors = String.class.getConstructors();
  2.                 for(Constructor constructor : constructors)
  3.                 {
  4.                         System.out.println(constructor.getName());
  5.                 }
  6.                 Constructor constructor = String.class.getConstructor(String.class);
  7.                
  8.                 System.out.println(constructor.newInstance("adf").toString());
复制代码
输出的结果为
java.lang.String
java.lang.String
java.lang.String
java.lang.String
java.lang.String
java.lang.String
java.lang.String
java.lang.String
java.lang.String
java.lang.String
java.lang.String
java.lang.String
java.lang.String
java.lang.String
java.lang.String
adf
也就是说,他返回的是该类的构造方法名称,并没有构造方法的参数,那么这个方法有什么用呢,用getConstructor()也可以获得函数的,而且还能明确构造方法的参数,那就不需要用到getConstructors()方法了吧


所以说,getConstructors()的意义是什么,在什么时候需要用到他

1 个回复

倒序浏览
getName只是打印构造方法的名字,你打印的是String类的构造方法,名字当然都是String了。
你可以再打印出名字后,再用getParameterTypes() 打印出参数,那样就可以得到所有的构造方法了。如:
  1. Constructor[] constructors = String.class.getConstructors();
  2.       for(Constructor constructor : constructors)
  3.       {
  4.               System.out.print(constructor.getName());
  5.               System.out.print("(");
  6.               Class[] clazz = constructor.getParameterTypes();
  7.               for(Class c:clazz){
  8.                       System.out.print(c.getName()+",");
  9.               }
  10.               System.out.print(")");
  11.               System.out.println();
  12.       }
复制代码
结果:
java.lang.String()
java.lang.String(java.lang.String,)
java.lang.String([C,)
java.lang.String([C,int,int,)
java.lang.String([I,int,int,)
java.lang.String([B,int,int,int,)
java.lang.String([B,int,)
java.lang.String(java.lang.StringBuilder,)
java.lang.String([B,int,int,java.lang.String,)
java.lang.String([B,int,int,java.nio.charset.Charset,)
java.lang.String([B,java.lang.String,)
java.lang.String([B,java.nio.charset.Charset,)
java.lang.String([B,int,int,)
java.lang.String([B,)
java.lang.String(java.lang.StringBuffer,)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马