链式方法调用中的通用规范

时间:2017-08-03 23:13:17

标签: java generics

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>不起作用。

更多是出于好奇而非必要...

1 个答案:

答案 0 :(得分:1)

这有效:

Bar<Integer, Integer> s2 = Foo.<Integer>newFoo().toBar();