在大多数Java代码中,我看到人们这样声明Java对象:
Map<String, String> hashMap = new HashMap<>();
List<String> list = new ArrayList<>();
代替:
HashMap<String, String> hashMap = new HashMap<>();
ArrayList<String> list = new ArrayList<>();
为什么偏爱使用接口而不是实际使用的实现来定义Java对象?