public class SomeClass {
private HashSet<SomeObject> contents = new HashSet<SomeObject>();
private Set<SomeObject> contents2 = new HashSet<SomeObject>();
}
有什么区别?最终它们都是一个 HashSet
不是吗?第二个对我来说似乎是错误的,但我已经看到它经常被使用、接受和工作。
最佳答案
Set
是一个接口(interface),HashSet
是一个实现 Set
接口(interface)的类。
将变量声明为 HashSet
类型意味着不能使用 Set
的其他实现。如果您需要 HashSet
的特定功能,您可能需要这个。
如果您不需要 HashSet
的任何特定功能,最好将变量声明为 Set
类型。这使得具体的实现可以在以后进行更改。您可能会发现,对于您正在使用的数据,不同的实现效果更好。通过使用该界面,您可以稍后根据需要进行此更改。
您可以在此处查看更多详细信息:When should I use an interface in java?
关于java - 这两个java变量声明有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3936558/