假设我需要某种类型的程序。任何类型的List都可以,所以我创建了一个。
List<Integer> example = new LinkedList<Integer>();
我听说在实例化对象时,将它们定义为接口是一种很好的做法,如果你正在做一些需要使用该接口的东西,但不一定是特定的具体类。例如,我可以将“example”列为ArrayList。
但是,以这种方式将我的LinkedList定义为List接口限制了我。例如,我不能使用任何特定于LinkedList的方法。我只能使用List接口本身的方法。我发现使用特定于LinkedList的方法的唯一方法是将示例转换为LinkedList,如下所示:
((LinkedList)example).addLast(1);
...这似乎打败了目的,因为通过将“example”转换为LinkedList,我也可以创建它并首先将它定义为LinkedList,而不是List。
那么为什么创建具体类并通过接口定义它们是一种好习惯呢?有什么东西我不见了吗?
答案 0 :(得分:0)
LinkedList实现了几个接口。
方法addLast()
来自Deque
界面。它可能就是你想要使用的界面。
或者,您可能只需要List
,在这种情况下,add()
方法会附加到列表中。