接口的Java编程应该一直使用它,特别是对于集合

Aks*_*aik 2 java collections interface

正如所建议的那样,我几乎无处不在,特别是在使用集合时.

// Using interfaces
List<Integer> list = new LinkedList<Integer>();
((LinkedList) list).offerFirst(num);

//Using concrete class
LinkedList list = new LinkedList<Integer>();
list.offerFirst(num);
Run Code Online (Sandbox Code Playgroud)

在第一种方法编译器提供警告甚至语法似乎很麻烦.

warning: [unchecked] unchecked call to offerFirst(E) as a member of the raw type LinkedList
Run Code Online (Sandbox Code Playgroud)

Era*_*ran 6

如果您正在使用该offerFirst方法,也许您应该编程到Deque接口(代表双端队列)而不是List接口:

Deque<Integer> deque = new LinkedList<Integer>();
deque.offerFirst(num);
Run Code Online (Sandbox Code Playgroud)

  • @AkshayNaik如果您正在使用特定于实现的方法,并且没有包含该方法的合适接口,则应使用实现类型(即类).如果您总是要将其强制转换为实现,那么编程接口是没有意义的. (2认同)