例子:
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
谢谢。
例子:
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
谢谢。
这通常是为了让您稍后可以在另一个实现中交换,并且仍然让代码运行相同。例如,如果您随后决定使用 aTreeMap
而不是 a HashMap
,您只需更改实例化步骤,其余代码仍然可以正常工作。
它是一种编程实践,称为对接口编程。
您可以在不影响其余代码的情况下切换实现(例如,在您的示例中切换到 a TreeMap
),因为它将使用基类,即Map
.
它将您的代码解耦,并且被认为是针对接口而不是具体实现进行编码的良好编程实践
契约式设计或“接口编程”是确保您的代码仅使用接口公开的属性/方法的原则,更重要的是,在任何给定时间使用一个主要接口。如果您一次使用多个接口,这通常表示耦合更紧密。
通常,您也不应该直接在代码中实例化对象。您应该将该工作委托给外部实体,以便使用的实现的任何更改都可以在一个地方完成。
有一篇 Dobb 博士的期刊文章指出应该禁止使用“new”关键字(确切的标题类似于“new is verboten”),但我现在找不到指向它的链接。