我正在我的计划中正式表达HashSet
:
Set<String> namesFilter = new HashSet<String>();
如果我这样开始,这在功能上有什么不同吗?
HashSet<String> namesFilter = new HashSet<String>();
我已经阅读了关于集合界面的this,我理解了界面(好吧,除了它们在这里使用)。我从Effective Java中读到了这个excerpt,我读过这个SO question,但我觉得没有更聪明。
Java中是否有最佳实践,如果是,为什么?我的直觉是,在我的第一个例子中,它使得转换为不同类型的Set
更容易。但话说回来,你只会投射到一个集合的东西,你可以通过重新构建它来转换它。
答案 0 :(得分:6)
我认为在混凝土类型上使用界面是更好的做法,即
Set<String> strings = new HashSet<String>();
通过这样做,您只承诺使用Set
接口提供的功能。如果您决定要使用不同的性能特征(例如,如果您想使用TreeSet
而不担心破坏代码),这样可以更轻松地更换您以后使用的集合类型。