张孝祥老师的基础加强的19集里面的一个例子:
import java.lang.reflect.Constructor;
public class ConTest {
public static void main(String[] args) throws Exception {
Constructor<String> con=String.class.getConstructor(StringBuffer.class);
String str=(String)con.newInstance(new StringBuffer("abc"));
System.out.println(str);
}
}
和我自己写的一个程序
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
class PrintClass{
private String s;
public PrintClass(String s){
this.s=s;
}
public void print(){
System.out.println(s);
}
}
public class Test5 {
public static void main(String[] args) throws Exception{
Class clazz=PrintClass.class;//获得字节码对象
Constructorconstructor=clazz.getConstructor(String.class);
PrintClassprintclass=
(PrintClass)constructor.newInstance("abc");}}
这两个程序都能运行成功
这两个程序调用newInstance()的方法:
第一个程序中用构造函数创建实例:
String str=(String)con.newInstance(new StringBuffer("abc"));
第二个程序中用构造函数创建实例:
PrintClass printclass=(PrintClass)constructor.newInstance("abc");
我试过,第一个程序用第二种方式出错,第二个用第一种方式也是出错,但是两个类几乎是一样的啊?我的疑问就是红色的那部分代码为什么不一样呢?
|