我正在构建一个ListUtil列表合并实现。这个想法是两个方法两个任意列表的方法,并为它提供一个列表,其中列出了最接近的初始列表类型的公共超类。这在Java中甚至可能吗?
答案 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)
除非你有充分的理由这样做,否则我会建议两种选择:
返回您想要的任何类型的列表(ArrayList
可能是合理的默认候选者),但不要向用户显示:
static <T> List<T> merge(List<T> list1, List<T> list2)
让用户决定他/她想要的列表类型:
static <T, L extends List<T>> L merge(List<T> list1, List<T> list2, Supplier<L> listSupplier)
使用后者,您可以使用例如:
调用该方法merge(list1, list2, LinkedList::new);