使用具体类实例化接口

时间:2016-06-26 22:16:51

标签: java

假设我需要某种类型的程序。任何类型的List都可以,所以我创建了一个。

List<Integer> example = new LinkedList<Integer>();

我听说在实例化对象时,将它们定义为接口是一种很好的做法,如果你正在做一些需要使用该接口的东西,但不一定是特定的具体类。例如,我可以将“example”列为ArrayList。

但是,以这种方式将我的LinkedList定义为List接口限制了我。例如,我不能使用任何特定于LinkedList的方法。我只能使用List接口本身的方法。我发现使用特定于LinkedList的方法的唯一方法是将示例转换为LinkedList,如下所示:

((LinkedList)example).addLast(1);

...这似乎打败了目的,因为通过将“example”转换为LinkedList,我也可以创建它并首先将它定义为LinkedList,而不是List。

那么为什么创建具体类并通过接口定义它们是一种好习惯呢?有什么东西我不见了吗?

1 个答案:

答案 0 :(得分:0)

LinkedList实现了几个接口。

方法addLast()来自Deque界面。它可能就是你想要使用的界面。

或者,您可能只需要List,在这种情况下,add()方法会附加到列表中。