多个泛型:最常见的超类

时间:2017-11-02 12:18:21

标签: java generics

我正在构建一个ListUtil列表合并实现。这个想法是两个方法两个任意列表的方法,并为它提供一个列表,其中列出了最接近的初始列表类型的公共超类。这在Java中甚至可能吗?

2 个答案:

答案 0 :(得分:2)

以下应该可以解决问题:

// Comment to get more information during initialization
logLevel := Level.Warn

resolvers += "Typesafe repository" at "http://repo.typesafe.com/typesafe/releases/"

resolvers += Resolver.typesafeRepo("releases")

addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.5.10")

用于例如通过:

private static <T> List<T> getSuper(List<? extends T> one, List<? extends T> two) {
    List<T> ts = new ArrayList<>(one);
    ts.addAll(two);
    return ts;
}

答案 1 :(得分:0)

除非你有充分的理由这样做,否则我会建议两种选择:

  1. 返回您想要的任何类型的列表(ArrayList可能是合理的默认候选者),但不要向用户显示:

    static <T> List<T> merge(List<T> list1, List<T> list2)
    
  2. 让用户决定他/她想要的列表类型:

    static <T, L extends List<T>> L merge(List<T> list1, List<T> list2, Supplier<L> listSupplier)
    
  3. 使用后者,您可以使用例如:

    调用该方法
    merge(list1, list2, LinkedList::new);