A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘源 中级黑马   /  2012-8-4 11:22  /  1293 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘源 于 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。
这个是什么意思啊,有什么用啊。
这个代码应该怎么改才能把小黄叹号去掉。改了之后有什么好处?

1 个回复

倒序浏览
泛型的原因,意思是要给Constructor指定泛型<T>类型。
T - 在其中声明构造方法的类。
在楼主的程序中加入
Constructor<String> constructor1 =String.class.getConstructor(StringBuffer.class);感叹号就可以去掉了,即指定构造函数是哪个类的。
好处是如果加了以后调用newInstance()时就不用强制类型转换了,因为已经告诉编译器是什么类的实例了。
String str1 = constructor1.newInstance(new StringBuffer("abc"));        //这里不用强制类型转化了


回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马