已经,如果是Collection<String> col;
那么col中存放的必须是String类型的元素..我看API,有Collection<E>这样的写法? 这个E是代表了什么?
代表了任何Object吗?我自己在IDE中写下这样的代码:private List<E> list;
这时IDE不认识这个E, 我想问问,怎么让这个地方,不报错呢??

解决方案 »

  1.   

    你可以查看下jdk1.5版本API的源代码,关于容器类的几个类在1.5版本都采用了泛型,在jre目录下rt.jar那个包
      

  2.   

    collection<E>里的E是"元素"的意思。 
    但不要忘了object也是一种类型,用object可以达到令容器可以存储任何类型的值 但是它E表示的是任何的类型 不能只局限于object 本身 ,有的时候我们要求我们的元素保留自己的特性 ,一旦他被转换成 object 它的特性就失去了,除非你再将它转换成它原来的类型才可以。 public static Collection fill(Collection<String> c){ 
    c.add("cat"); 
    c.add("dog"); 
    return c; 
    } 这样就可以了,Collection<String>中的尖括号中代表的是你的容器中所存储的元素的类型。 
      

  3.   

    E - Element (used extensively by the Java Collections Framework) 
    K - Key 
    N - Number 
    T - Type 
    V - Value 
    在定义一个类的时候可以用
    如:
    class Test<E> {}
    其他的不懂,这个东西感觉有点抽象
      

  4.   

    你这样写不行。可以写一个类,如下:
    class T<E> {

    private T<E> t = null;
    T(){

    }

    public void writer(){
    t = new T<E>();
    }
    }
    E只是一个泛指符号,使用泛型创建具体对象时间,必须是具体的类型。
      

  5.   

    E K N T V 是JDK内置设置好的吗?
      

  6.   

    这个E只是一个抽象的概念,当你去示例这个类的时候,就可以定义E的类型了。在此,E只是一个标识,在此标识后下文可以直接使用。
    一旦你声明对象时给定了E的类型。那么在你定义类的地方使用到的E的类型,必须都为声明时的类型。
      

  7.   

    E K N T V 是JDK内置设置好的吗?
    不是
      

  8.   

    泛型中你要可以用具体的类型如String等代替E。看一个简单的例子:
    public class Box<T> {
        private T t;
        
        private void add(T t) {
            this.t = t;
        }
        
        public T get() {
            return t;
        }
        
         public static void main(String[] args) {
            Box<Integer> boxInt = new Box<Integer>();
            boxInt.add(1);
            Integer intResult = boxInt.get();
            
            Box<String> boxStr = new Box<String>();
            boxStr.add("Test");
            String strResult = boxStr.get();
                    
            System.out.println("Integer Result : " + intResult);
            System.out.println("String Result : " + strResult);
        }
    }
      

  9.   

    个人理解:
    <E>就类似一枚举,
    但不是用在代码中的,
    只是用来阐述字面意思的。
    表示对象。
    不是JDK内置的,本身在代码中并没有特殊含义。
      

  10.   

    E 指代任意一个object的类型 
    比如说Sting、Interger,当然也可以是你自己创建的object
      

  11.   


    Collection <String> col  这里的是声明。如果 在创建 一个类是就可以使用泛型。例如: class A<T>{}   class B<P,K>{}  这样的写法。同样在类中也可以class B<P,K>{private P p;
    private K k;
    } 如果 B 类写好了,我们通过 B<String,String> b = new B<String,String>(); 这样的写法当然也可以 A<?> a = new A<?>();  ?表示泛指。
      

  12.   

    把<E>去掉   要不就在<>写上个类型
      

  13.   

    因为你没有在类上声明泛型,即
    public class 类名<随便一个符号>
      

  14.   

    自己定义泛型类的时候用E,List是java类,所以必须用一个类型替换他。
      

  15.   

    E???E指代任意对象啊,这个E必须是存在得类,可以是J2SE得类,也可以是自定义的类,他是泛指
      

  16.   

    E代表Element Sun公司建议使用单个字符作类型参数
    在JDK1.5中,像LinkedList类这样定义
    public class LinkedList <Element>{
       boolean add(Element 0)
       {
          ......
       }
       
       Element getFirst()
       {
          .......
       }
    }一旦声明了某个类型名,就可以在泛型代码体内任何期望出现类型的地方使用。
      

  17.   

    就好像变量一样,你想取什么名字,就用什么名字,并不是java的关键字
      

  18.   

    定义泛型类才用泛型名~ ABCD助记符号随便~
    你使用的时候得告诉编译器你要的类型~
    譬如 Stringprivate List<String> list;