本帖最后由 丁晓宇 于 2012-2-18 03:30 编辑
别着急 我来回答 先占位 我正在编辑哦
-------------------------------------------------
Constructor constructor1=String.class.getConstructor(StingBuffer.class)
String str2 = (String)constructor1.newInstance(new StringBuffer(“abc”));
1、其中第一行StingBuffer.class是得到参数是StingBuffer类型的构造方法的意思?
每个方法都有参数列表(当然参数列表可以为空),构造方法也是方法,它也有参数列表,既然有参数就要有参数的类型。
我在下面举个例你看一下
public class User(){
private int id;
private String name;
private String password;
...省略getter & setter
public User(){// 省略构造方法内部代码}
public User(String name){//同上}
public User(int id){//同上}
}
如果我要获取User类其中的一个构造方法
那我想获取public User(String name){//同上}这个构造方法怎么办??
答:Constructor c1 = User.class.getConstructor(String.class);,因为一个类也许会有很多构造方法但是他们的参数列表一定不相同,你必须用方法的参数列表来区分。
2、那第二行为什么要用new StringBuffer(“abc”) 不是很理解啊 (“abc”) 前面为什么要加new StringBuffer ? new StringBuffer("abc") 这是创建了一个StringBuffer对象
StringBuffer sb = new StringBuffer("abc") ; 这句话是调用StringBuffer中的Public StringBuffer(String str){} 这个构造方法,每个类的构造方法的返回值一定是他本身的一个实例对象(虽然构造方法是没有返回值的=,=我这样说只是为了好理解)
3、直接把第二行写成String str2 = (String)constructor1.newInstance(“abc”);不可以吗 谁讲讲啊
"abc" 这是一个 String 对象, 而你这个构造需要的是StringBuffer对象 。。 我想说道这里你应该已经明白了 ,不明白的话 建议看一下什么是方法重载 |