黑马程序员技术交流社区
标题:
构造方法中的反射问题
[打印本页]
作者:
王月
时间:
2012-6-26 16:19
标题:
构造方法中的反射问题
Constructor cons=String.class.getConstructor
(StringBuffer.class)
在获取String类的构造方法时,怎么确定这个构造方法中是什么参数呢,也有可能是StringBuilder.class类型的啊
作者:
张华廷
时间:
2012-6-26 16:54
String()
初始化一个新创建的 String 对象,它表示一个空字符序列。
String(byte[] bytes)
构造一个新的 String,方法是使用平台的默认字符集解码字节的指定数组。
String(byte[] ascii, int hibyte)
已过时。 该方法无法将字节正确转换为字符。从 JDK 1.1 起,完成该转换的首选方法是通过 String 构造方法,该方法接受一个字符集名称或使用平台的默认字符集。
String(byte[] bytes, int offset, int length)
构造一个新的 String,方法是使用指定的字符集解码字节的指定子数组。
String(byte[] ascii, int hibyte, int offset, int count)
已过时。 该方法无法将字节正确转换为字符。从 JDK 1.1 开始,完成该转换的首选方法是通过 String 构造方法,它接受一个字符集名称,或者使用平台默认的字符集。
String(byte[] bytes, int offset, int length, String charsetName)
构造一个新的 String,方法是使用指定的字符集解码字节的指定子数组。
String(byte[] bytes, String charsetName)
构造一个新的 String,方法是使用指定的字符集解码指定的字节数组。
String(char[] value)
分配一个新的 String,它表示当前字符数组参数中包含的字符序列。
String(char[] value, int offset, int count)
分配一个新的 String,它包含来自该字符数组参数的一个子数组的字符。
String(int[] codePoints, int offset, int count)
分配一个新的 String,它包含该 Unicode 代码点数组参数的一个子数组的字符。
String(String original)
初始化一个新创建的 String 对象,表示一个与该参数相同的字符序列;换句话说,新创建的字符串是该参数字符串的一个副本。
String(StringBuffer buffer)
作者:
薄炳鑫
时间:
2012-6-26 16:58
你可以通过查看jdk的文档知道String有那些构造方法,然后在根据自己的需要来反射相应的构造方法。
在通过反射出来的构造方法对象来创建对应的String对象。
作者:
耿鑫
时间:
2012-6-26 17:07
估计你是在看张老师的反射视频吧,
这里边老师只是举个例子
,怎么得到String类中String(StringBuffer buffer)这个构造方法,所以传入的传入的参数是StringBuffer.class,
这是在知道有String(StringBuffer buffer)这个构造函数的前提下进行的反射
假如你不知道String类有那些构造方法,、具体构造方法的参数是什么类型的也不知道,你可以通过如下方法得到每个构造方法的参数类型:
public class Test6
{
public static void main(String[] args) throws Exception
{
Constructor[] cons = String.class.getDeclaredConstructors();
for(Constructor con : cons)
{
Class[] parameterType = con.getParameterTypes();
for(Class clazz : parameterType)
{
System.out.print(clazz.getSimpleName() + ", ");
}
System.out.println();
}
}
}
运行结果是
String,
char[],
char[], int, int,
int[], int, int,
byte[], int, int, int,
byte[], int,
StringBuilder,
byte[], int, int, String,
byte[], int, int, Charset,
byte[], String,
byte[], Charset,
byte[], int, int,
byte[],
StringBuffer,
int, int, char[],
你会发现里边有你想要的StringBuffer类型的参数,如果你想换别的可以根据不同类型的参数,选择不同的构造函数。
作者:
王月
时间:
2012-6-26 17:09
耿鑫 发表于 2012-6-26 17:07
估计你是在看张老师的反射视频吧,这里边老师只是举个例子,怎么得到String类中String(StringBuffer buffer ...
嗯,现在已经看明白了,谢谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2