论坛首页 Java企业应用论坛

一个有关泛形的问题。

浏览 5397 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2005-12-31  
import java.util.LinkedList;
import java.util.List;

public class GuitarManufacturerList<String> extends LinkedList<String>{

  public GuitarManufacturerList(); {
    super();;
  }

  public boolean add(String manufacturer); {
	  if (manufacturer.indexOf("Guitars"); == -1); {
	      return false;
	    } else {
	      super.add(manufacturer);;
	      return true;
	    }
  }
  public static void main(String[] args);{
	  GuitarManufacturerList gml=new GuitarManufacturerList();;
	  gml.add("a");;
  }
}


[b]我得问题就是,这个程序是错的,可是我就想不明白,为什么是错的,谁能解释一下?

1。先是The type parameter String is hiding the type String 这里有个警告,只有改成GuitarManufacturerList<E>,或者GuitarManufacturerList才会消除警告。
2 第二个警告:The serializable class GuitarManufacturerList does not declare a static final serialVersionUID field of type long ,找不到原因。
3 public boolean add(String manufacturer); 这一句,为什么编译器会把参数给认成Object的了?
4public static void main(String[] args); 这一句。 Cannot make a static reference to the non-static type String,这又是什么原因?[/b]
   发表时间:2005-12-31  
晕,第三点怎么是乱码?

3 。意思就是manufacturer这个String为什么会被编译器给转成Object的了?
0 请登录后投票
   发表时间:2005-12-31  
大过年的,还搞技术,太惨了点吧

GuitarManufacturerList gml=new GuitarManufacturerList();
声明语句错了
0 请登录后投票
   发表时间:2005-12-31  
呵呵,一寸光阴一寸金呀。

GuitarManufacturerList gml=new GuitarManufacturerList(); 

这里没错吧,它提示是public static void main(String[] args)的错,就算把声明改了,也是会提示我上面所写的那些错误和警告。
0 请登录后投票
   发表时间:2006-01-02  
1. 首先你这样写, 我想本身就问题.

2. 如果你要只能构造String的. 那么要么
GuitarManufacturerList extends LinkedList<String>

要么
GuitarManufacturerList<T extends String> extends LinkedList<String>

虽然下面的会有个警告.

3. 因为实现了Serializable接口.

4. 因为你申明的时候用了String.
0 请登录后投票
   发表时间:2006-01-02  
那为什么
GuitarManufacturerList&lt;E&gt; extends LinkedList&lt;E&gt;
这种写法就是对的。

GuitarManufacturerList&lt;String&gt; extends LinkedList&lt;String&gt;
这种就会有警告呢?
0 请登录后投票
   发表时间:2006-01-28  
GuitarManifactureList只能存String类型的,也就是限定死了,没有必要用泛型啊,泛型就是数据类型在实例化时才能确定,所有没有必要跟着个&lt;String&gt;,GuitarManifacture&lt;E extends String&gt;也没有必要,因为String是final的。当然如果不是String,那是可以的哈
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics