我对Java(和英语)很陌生,所以请多多包涵。
试图写出类似...
Container con = new Container<Book>();
con.insert(new Book());
con.insert(new Car());
...并且没有收到任何类型的错误。但是像...这样的线条
Car c = con.remove(); // removes the last inserted element for simplicity
说“错误:不兼容的类型”,所以我把它改成了
Object carObj = (Car) con.remove();
它奏效了。我的问题是:当我说
new Container<Book>();
我创建了一个只能容纳 Book 类型对象的容器,但是由于指针(它是非泛型的?)我可以突然将任何类型的对象放入我的容器中。这里发生了什么?指针仅在容器中的任何内容中看到对象个性,但我不知道指针允许容器中的每个具有对象个性的对象主要创建为通用(我的公式可能是错误的)。所以当我有一个非泛型指针时,我是创建一个泛型容器还是非泛型容器都没有关系?它总是被认为是一个非通用容器(当我删除它们时我必须在其中投射对象)?
new Container<Book>().insert(new Car()); // compiler error as excepted
好奇并使问题变得更糟(也许)。
Container<Car> cars = new Container();
cars.insert(new Book()); // compiler error: required Car, found Book
现在指针只看到容器中的汽车个性。但是即使我将容器创建为非通用容器,它也不允许我放入一本书。为什么?
new Container().insert(new Car()); // works fine
不得不说,既迷人又刺激……