黑马程序员技术交流社区
标题:
Constructor的安全问题
[打印本页]
作者:
刘源
时间:
2012-8-4 11:22
标题:
Constructor的安全问题
本帖最后由 刘源 于 2012-8-4 17:28 编辑
“
问题已经解决
”。
import java.lang.reflect.*;
public class ReflectTest1 {
public static void main(String[] args)throws Exception {
//new String (new StringBuffer("abc"));
Constructor constructor1 =String.class.getConstructor(StringBuffer.class);
String str1 = (String)constructor1.newInstance(new StringBuffer("abc"));
System.out.println(str1.charAt(2));
String str2 = (String)String.class.newInstance();
System.out.println(str2==null);//F
System.out.println(str2);
System.out.println(str2.equals(null));//F`
}
}
这个红色这句话在myeclipse上左边也会出现小黄叹号。小弟英语不好,看不太懂,所以就打印出来了:
Constructor is a raw type.References to generic type Constructor<T> should be parameterized。
这个是什么意思啊,有什么用啊。
这个代码应该怎么改才能把小黄叹号去掉。改了之后有什么好处?
作者:
胡文凡
时间:
2012-8-4 11:51
泛型的原因,意思是要给Constructor指定泛型<T>类型。
T - 在其中声明构造方法的类。
在楼主的程序中加入
Constructor
<String>
constructor1 =String.class.getConstructor(StringBuffer.class);感叹号就可以去掉了,即指定构造函数是哪个类的。
好处是如果加了以后调用newInstance()时就不用强制类型转换了,因为已经告诉编译器是什么类的实例了。
String str1 = constructor1.newInstance(new StringBuffer("abc"));
//这里不用强制类型转化了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2