【发布时间】:2018-05-15 11:41:46
【问题描述】:
您好,我正在尝试使用 Java8 中提供的供应商和消费者。 我正在尝试使用构建器模式,每次我必须构建我的节/有效负载时,我都可以重用代码。
所以我有一个 Stanzabuilder 类,我正在传递一个类 T(期望任何类)
public abstract class StanzaDataBuilder<T> {
final Supplier<T> instance;
StanzaDataBuilder(Supplier<T> instance) {
this.instance = instance;
}
public T build() {
return this.instance.get();
}
现在我正在尝试为其中一个类(RetailProfile)构建一个节 为此,我编写了一个构建器类 RetailProfileBuilder 并扩展了 StanzaBuilder 并设置了一些值:
public class RetailProfileDataBuilder extends StanzaDataBuilder<RetailProfile>{
RetailProfileDataBuilder() {
super(RetailProfile::new);
}
public static RetailProfileDataBuilder of() {
RetailProfileDataBuilder rpf= new RetailProfileDataBuilder();
rpf.instance.get().setDomain("RetailBuffer");
return rpf;
}
当我调试并输入system.out.println(rfb.instance.get().getDomain()) 时,我可以看到该值已设置,但是当我返回此 rpf 时,值为 null。
我可以看到我正在返回 obj <b>rpf</b> 这是一个新对象,因此 value 设置为 null。所以我尝试返回实例
return (RetailProfileDataBuilder) rpf.instance;
这里我得到一个例外:
java.lang.ClassCastException: package.RetailProfileDataBuilder$$Lambda$35/457597997 cannot be cast to package.RetailProfileDataBuilder
我将构建器类称为:
RetailProfileDataBuilder rbdb= RetailProfileDataBuilder.of().build();
在这里,我在 RetailProfileDataBuilder 类中设置的字段的值为 null。
关于如何返回具有值的 rpf 对象的任何想法?
感谢您的宝贵时间
【问题讨论】:
标签: java classcastexception consumer