分配给Java中更广泛类型的不同实现之间的差异
发布时间:2020-12-15 02:08:39 所属栏目:Java 来源:网络整理
导读:我知道将子类实现分配给Interface类型的变量是最佳实践,以保持灵活性,如下所示: ListInteger list = new ArrayListInteger(); 我目前的理解是,当将列表声明为类型List时,将其功能限制为仅列出List所需的方法的实现,并且不允许特定于实现的方法.那说,有什么
我知道将子类实现分配给Interface类型的变量是最佳实践,以保持灵活性,如下所示:
List<Integer> list = new ArrayList<Integer>(); 我目前的理解是,当将列表声明为类型List时,将其功能限制为仅列出List所需的方法的实现,并且不允许特定于实现的方法.那说,有什么区别: List<Integer> list = new ArrayList<Integer>(); 和: List<Integer> list = new LinkedList<Integer>(); 除了由List接口的每个类的不同实现引起的一些明显的性能差异之外,是否有任何差异? 作为另一个例子,使用Set,我知道这样做: Set<String> set = new HashSet<String>(); 给你一个HashSet作为Set,而: Set<String> set = new TreeSet<String>(); 给你一个TreeSet作为一个集合,这意味着(除其他外),该集合是自动排序的.但是不是自动排序类的特定于实现的函数吗? 解决方法
正如评论中已正确陈述的那样,如果您通过其接口声明变量,则只能访问该接口定义的方法.具体类型之间的主要区别在于实现的性能.
但是也可以选择性地实现界面中定义的某些方法.例如,如果实现Set接口的具体类型不支持add操作,则 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |