可能重复:
“编程到接口”是什么意思?
我注意到有些人喜欢将一个对象声明为它实现的接口之一,即使在变量的范围内,没有必要将其视为接口,例如,没有期望接口的外部 API。
例如:
Map<String, Object> someMap = new HashMap<String, Object>();
或者你可以做
HashMap<String, Object> someMap = new HashMap<String, Object>();
并完全避免进口java.util.Map
。
通过接口(上面第一个)而不是类本身(上面第二个)声明它有什么优点?
谢谢