Java 有什么区别

Java 有什么区别,java,collections,Java,Collections,各位! 刚开始学习Java,一刻也不懂,比如: Set<Integer> intset = new HashSet<Integer>(); (1) HashSet<Integer> intset2 = new HashSet<Integer>(); (2) 这些例子之间有什么区别?还是它们是一样的?1个示例看起来像向上转换,所以这意味着我们的HashSet只有Setinterface方法?谢谢你的回复 当你写作时 Set intset = n

各位!

刚开始学习Java,一刻也不懂,比如:

Set<Integer> intset = new HashSet<Integer>();  (1)

HashSet<Integer> intset2 = new HashSet<Integer>(); (2)
这些例子之间有什么区别?还是它们是一样的?1个示例看起来像向上转换,所以这意味着我们的HashSet只有Setinterface方法?谢谢你的回复

当你写作时

Set intset = new HashSet();
您可以保证以下代码(如果不强制转换)不会使用HashSet类的任何特性。这意味着未来的实现可能会用集合的任何其他实现替换HashSet,或者从其他地方接收它。这实际上是一种最佳实践,因为它意味着您的代码更少。

Set是一个接口,HashSet是Set接口的哈希实现


inset是一个集合,因此它可以引用集合的任何实现,比如HashSet。另一方面,inset2只能引用一个HashSet对象。

Set[Set][1]是一个接口,HashSet[HashSet][2]是一个类,在HashSet类中实现Set接口方法,HashSet类实现Set接口

这是多态性

这些例子之间有什么区别

示例一创建一个指向集合类型的内存空间的指针。这意味着您将能够使用Set接口中声明的所有方法操纵内存中的空间

示例2创建了一个指向哈希集类型的内存空间的指针。这意味着您将能够使用HashSet类中声明的所有方法操纵内存中的空间

还是它们是一样的

这取决于你在这两行之后要做什么。Set是类似Set的集合的通用约定,但有时我们需要更具体的方法。这时您需要将对象向下转换为更具体的类型。接口应该处理公共性

1个例子看起来像是向上转换,所以这意味着我们的HashSet只有Setinterface方法


是的。

我不确定复制的内容。。。这里有一个问题,区别是什么,为什么更喜欢使用界面。它们是两个截然不同的问题,除了谈论同一个话题之外,它们甚至没有重叠。