如何在没有未经检查的强制转换的情况下将设置程序与抽象类链接在一起

时间:2019-06-14 17:58:40

标签: java oop generics

我们使用的一种非常常见的模式是使用泛型在抽象类中设置设置器的返回类型,以允许我们在实现中链接设置器。但是,这会导致抽象设置器中出现Unchecked强制转换。例如:

public class A extends B<A> {

    private String bar;

    public String getBar() {
        return bar;
    }

    public A setBar(String bar) {
        this.bar = bar;
        return this;
    }

    public static void main(String... args) {
        A a2 = new A()
                .setBar("Bar")
                .setFoo("Foo");
    }
}

还有

public abstract class B<S> {

    private String foo;

    public String getFoo() {
        return foo;
    }

    public S setFoo(String foo) {
        this.foo = foo;
        return (S) this;
    }
}

但这导致Unchecked cast: 'B<S>' to 'S'的{​​{1}}。

是否可以遵循更好的类型安全模式,这意味着我们仍然可以链接设置器?

0 个答案:

没有答案