代码通过其接口类型(例如,Set)而不是其实现类型来引用Collection

Shi*_*han 0 java collections

我看到大多数anycode总是通过其接口类型(例如,Set)而不是其实现类型来引用Collection.

以下是Oracle Java教程提供的原因,

这是一个强烈推荐的编程实践,因为它使您可以灵活地仅通过更改构造函数来更改实现.如果用于存储集合的变量或用于传递它的参数被声明为Collection的实现类型而不是其接口类型,则必须更改所有此类变量和参数以更改其实现类型.

此外,作者还提供了无法保证生成的程序能够正常运行的信息.如果程序使用原始实现类型中存在但未在新实现类型中存在的任何非标准操作,则程序将失败.仅通过其界面引用集合可防止您使用任何非标准操作.

作者谈到的非标准操作是什么?

其次,如何仅通过其界面引用集合会阻止我们使用任何非标准操作?

请在Java代码的帮助下详细说明?

Cfx*_*Cfx 5

对此的一个例子是LinkedList具有a getFirst()和getLast()方法.使用它们看起来很方便,但如果实现改变ArrayList,它们就会消失.