'Set = new HashSet'或'HashSet = new Hashset'?

Pur*_*ret 1 java generics collections constructor initialization

可能重复:
List与ArrayList变量类型?

HashSet在我的程序中正如我所说:

Set<String> namesFilter = new HashSet<String>();

如果我这样开始,这在功能上有什么不同吗?

HashSet<String> namesFilter = new HashSet<String>();

我已经读过关于集合界面的这个,我理解接口(好吧,除了它们在这里使用).我已经从Effective Java中读到了这段摘录,我已经阅读了这个问题,但我觉得没有比这更聪明了.

Java中是否有最佳实践,如果是,为什么?我的直觉是,Set在我的第一个例子中,它使铸造变得更容易.但话说回来,你只会投射到一个集合的东西,你可以通过重新构建它来转换它.

Chr*_*lor 6

我认为在混凝土类型上使用界面是更好的做法,即

Set<String> strings = new HashSet<String>();
Run Code Online (Sandbox Code Playgroud)

通过这样做,您承诺仅使用Set接口提供的功能.如果您决定需要不同的性能特征(例如,如果您想使用其他TreeSet代码)而不必担心破坏代码,则可以更轻松地在以后更换您正在使用的集合类型.


归档时间:

查看次数:

2469 次

最近记录:

12 年,11 月 前