如何在Java中正确转换通用集合?

时间:2019-07-10 17:47:35

标签: java casting coding-style

假设我最初声明并定义了一组整数,如下所示:

Set<Integer> s = new TreeSet<>();

现在,稍后我想使用特定于TreeSet的方法。并想象我在项目中需要很多次。下列哪种方法被认为是更好的做法?

1-在开始使用s之前,在我的方法开始之前编写此代码

s = (TreeSet) s;

2-使用包含的类型进行书写(同样在方法的开头)

s = (TreeSet<Integer>) s;

3-仅在需要访问特定于TreeSet的方法时,才从Set强制转换为TreeSet

Integer x = ((TreeSet)s).first();

1 个答案:

答案 0 :(得分:0)

正如其他人所说,如果声明很重要,则不必在声明后失去SetTreeSet的上下文。

一个TreeSet是一个Set,因此您应该能够将其作为Set传递。

例如:

Set<Integer> getSetButDoSomethingSpecial() {
  TreeSet<Integer> treeSet = new TreeSet<>();
  //Do something specific to treeSet
  return treeSet;
}