gpt4 book ai didi

Java 在分层生成器模式中避免类转换警告

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:29:48 25 4
gpt4 key购买 nike

有没有办法避免在这种分层构建器模式中强制转换未经检查的类?

public abstract class BaseBuilder <T, B extends BaseBuilder<T,B>> {

public B setB1(String b1) {
this.b1 = b1;
return (B) this; // can I make this unchecked cast go away?
}

abstract public T build();

String b1;
}

不,答案不是:

return B.class.cast(this);

是的,我知道我可以使用@SuppressWarnings

最佳答案

如前所述,不能这样做,因为它不安全。 B延伸BaseBuilder<T,B> ,但是 BaseBuilder<T,B> (this 的类型)不扩展 B .递归边界在 Java 中几乎从不有用,并且不会给你 self 类型。你应该摆脱它。

您可以添加一个抽象方法,这样实现类必须给出一个 B 的实例。 :

public abstract class BaseBuilder <T, B> {

abstract public B getB();

public B setB1(String b1) {
this.b1 = b1;
return getB();
}

abstract public T build();

String b1;
}

关于Java 在分层生成器模式中避免类转换警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13845812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com