public class Foo<T> {
public static <T> Foo<T> newFoo() {
return new Foo<>();
}
public Bar<T, T> toBar() {
return new Bar<>(this, new ArrayList<T>());
}
}
public class Bar<S, T> {
public Bar(Foo<T> Foo, List<S> list) {
}
public static void main(String[] args) {
Foo<Integer> newFoo = Foo.newFoo();
Bar<Integer, Integer> s = newFoo.toBar();
Bar<Integer, Integer> s2 = Foo.newFoo().toBar();
}
}
主方法的前两行工作正常。最后一行(Foo.newFoo().toBar()
)给出了一个错误:Type mismatch: cannot convert from Bar<Object,Object> to Bar<Integer,Integer>
。有没有办法在一行中没有出错?转换为Bar<Integer, Integer>
不起作用。
更多是出于好奇而非必要...
答案 0 :(得分:1)
这有效:
Bar<Integer, Integer> s2 = Foo.<Integer>newFoo().toBar();