Java 初始化泛型集合

Java 初始化泛型集合,java,generics,arraylist,collections,cannot-find-symbol,Java,Generics,Arraylist,Collections,Cannot Find Symbol,用Java编程已经有几年了,所以我决定参考一个旧的、可靠的源代码。在Liang的“Java编程入门”中,第798页,一个ArrayList被安排如下: Collection<String> collection = new ArrayList<String>(); 然后后来, my_collection = ArrayList<String>(); 注意:类型过程是“完全审查”的,不是这里的问题 而且 当然:我可以通过声明我首先要初始化的任何类型来“修复”

用Java编程已经有几年了,所以我决定参考一个旧的、可靠的源代码。在Liang的“Java编程入门”中,第798页,一个
ArrayList
被安排如下:

Collection<String> collection = new ArrayList<String>();
然后后来,

my_collection = ArrayList<String>();
注意:类型过程是“完全审查”的,不是这里的问题

而且


当然:我可以通过声明我首先要初始化的任何类型来“修复”这个问题,但这是怎么回事?为什么Liang所说的和我认为可能的不一致,以及什么是实际的(至少就我的编译器而言)?

就你程序的其他部分所知,你的
等待队列只是一个
集合,它没有
get
remove
方法


您不想将实现与变量的类型耦合,这是正确的,但是您不应该使用
Collection
,除非您只想迭代内容。使用
列表
设置
或其他集合界面来描述集合。这些方法公开了所需的
get
remove
(在
列表
的情况下)方法,并公开了对象的行为(但不是实现-在本例中为
ArrayList
)。e、 例如,
列表
允许重复,而
集合
不允许重复。

删除(int)
的返回类型是什么?这与原始的
收藏有什么关系?什么是等待队列?你的问题现在到处都是。请澄清并提供。my_集合的编译时类型为,既没有get方法,也没有remove(int)方法。您将其初始化为ArrayList这一事实与此无关;就编译器而言,变量的类型仅作为集合被记住。如有疑问,请阅读官方文件;在Java中,文档不仅仅是为了帮助,它们是法律
应该是
my_collection=new ArrayList()@shmosel Right:修复了这个问题。@WatermarkBranding不,你没有。集合实际上有删除methods@ControlAltDel右:只是不是我期望的那些重载的,它们属于
ArrayList
。好的,我现在看到了。谢谢你的回答。
my_collection = ArrayList<String>();
[...].java:48: error: incompatible types: boolean cannot be converted to Process
        otherAlg.addJob(wait_queue.remove(0));
                                         ^
[...].java:72: error: cannot find symbol
        return wait_queue.get(0);
                         ^