[英]how to access class of an interface after implementing it and instantiating that concrete class?
[英]Instantiating an interface with a concrete class
假设对于一个程序,我需要某种列表。 任何类型的列表都可以,所以我创建一个。
List<Integer> example = new LinkedList<Integer>();
我听说,实例化对象时将其定义为接口是一种很好的做法,如果您要执行的操作需要使用该接口,而不必使用特定的具体类。 例如,我可以使“ example”列表代替ArrayList。
但是,以这种方式将LinkedList定义为List接口限制了我。 例如,我不能使用任何特定于LinkedList的方法。 我只能使用List接口本身中的方法。 我发现使用特定于LinkedList的方法的唯一方法是将示例转换为LinkedList,如下所示:
((LinkedList)example).addLast(1);
...这似乎无法达到目的,因为通过将“ example”强制转换为LinkedList,我可能还创建了它,并将其首先定义为LinkedList,而不是List。
那么,为什么要创建具体的类并通过接口定义它们呢? 有什么我想念的吗?
LinkedList实现了几个接口。
方法addLast()
来自Deque
接口。 可能就是您要使用的界面。
另外,您可能只需要一个List
,在这种情况下, add()
方法将追加到列表中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.