Java中的非泛型集合 - 任何用途?

ale*_*440 15 java generics collections

是否有任何情况下最好在Java中使用非泛型集合而不是通用集合(或者它们仅为向后兼容性而存在)?

Isa*_*aac 12

绝对不.如果您无法在声明时推断类型,请使用a ?作为类型说明符 - 这就是它的用途.(在某些情况下,使用?会限制您调用某些方法,例如List.add().在这种情况下,您可以找到更严格的类型说明符; Object通常可以使用).

仍然支持非泛型用法,因为从技术上讲,使用它是没有错的; 你最终会写出更多的施法指令并让自己处于较高的风险之中ClassCastException,但就规范而言,它在技术上是合法的.

总的来说,没有任何情况(我能想到)避免泛型"比使用它们更好".在最坏的情况下(当你必须使用?Object在申报时),两种方法都是相同的.

  • 如果列表是用?定义的,你不能使用`list.add`?作为类型说明符...... (5认同)
  • 最重要的是,泛型只是编译时,运行时行为和性能根本不受泛型的影响.因此,*更好*,这只是个人偏好的问题. (3认同)
  • @Vulcan`ArrayList`和`LinkedList`不能用`?`实例化*,但可以*声明*.使用泛型的主要好处在于声明性方面,而不是实例化,但这对于这个问题并不重要.问题是关于是否存在不使用泛型(引用)*比使用它们更好的情况.在最坏的情况下(使用`?`或`Object`),两种方法都是相同的(如你所说;相同的缺点).我不能想到避免泛型比使用泛型更好的情况.我相应地编辑了我的答案; 感谢您的反馈. (2认同)