Java 初始化泛型集合
用Java编程已经有几年了,所以我决定参考一个旧的、可靠的源代码。在Liang的“Java编程入门”中,第798页,一个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>(); 注意:类型过程是“完全审查”的,不是这里的问题 而且 当然:我可以通过声明我首先要初始化的任何类型来“修复”
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);
^