java - 这两个java变量声明有什么区别?

标签 java variables set declaration hashset

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/

相关文章:

variables - 谷歌分析自定义标识符

algorithm - 在 O(mlogn) 时间内计算两个未排序数组的并集和交集

c - 使用指针设置操作

java - 多个 QueueConnectionFactory 上的异常

java - 无法从 WebFilter 发送 json 响应

swift - 如果常量变量是函数类型的类型,那么什么是不能改变的呢?

python - 如何使用类方法作为参数(变量)?

java - 运行时需要获取weblogic服务器用户名和密码

java - Realm :更改字段名称以进行迁移

c++ - 错误 : no matching constructor for initialization of 'set<int>'