黑马程序员技术交流社区
标题:
反射中的getConstructors()的意义
[打印本页]
作者:
广驰
时间:
2012-9-21 21:26
标题:
反射中的getConstructors()的意义
本帖最后由 应广驰 于 2012-9-26 10:41 编辑
使用Class中的getConstructors()并迭代取出的构造函数全都一样,没有参数类型
Constructor[] constructors = String.class.getConstructors();
for(Constructor constructor : constructors)
{
System.out.println(constructor.getName());
}
Constructor constructor = String.class.getConstructor(String.class);
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()的意义是什么,在什么时候需要用到他
作者:
张 涛
时间:
2012-9-21 21:42
getName只是打印构造方法的名字,你打印的是String类的构造方法,名字当然都是String了。
你可以再打印出名字后,再用getParameterTypes() 打印出参数,那样就可以得到所有的构造方法了。如:
Constructor[] constructors = String.class.getConstructors();
for(Constructor constructor : constructors)
{
System.out.print(constructor.getName());
System.out.print("(");
Class[] clazz = constructor.getParameterTypes();
for(Class c:clazz){
System.out.print(c.getName()+",");
}
System.out.print(")");
System.out.println();
}
复制代码
结果:
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,)
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2