我多次听说,在实例化对象时应该执行以下操作:
“接口”名称=新的“类”();
例如,针对实现的类链表List:
List
List<String> name = new LinkedList<String>();
LinkedList 实现许多接口,包括队列,双端队列等。上面的代码和
LinkedList
LinkedList<String> name = new LinkedList<String>();
要么
Queue<String> name = new LinkedList<String>();
为什么必须同时指定两次类型?似乎多余,但oracledocs似乎没有提及。
LinkedList<String> name = new LinkedList<String>();在Java 7中是多余的。可以将其重写为LinkedList<String> name = new LinkedList<>();。
LinkedList<String> name = new LinkedList<>();
你想写类似的原因:
// Java 7 way: List<String> name = new LinkedList<>();
如果您改变主意,则可以为您提供以后更改数据收集的自由。这样,您的代码将更加灵活。您应该注意的是,您可以使用的方法仅限于左侧类型(List在这种情况下)。这意味着,如果您使用层次结构中较高的类型(这是Object极端的示例),则可能无法获得所需的所有功能。
Object