Java 不能取消对void的引用;尝试使用生成器模式
编辑:我在返回void时本应返回Java 不能取消对void的引用;尝试使用生成器模式,java,builder,Java,Builder,编辑:我在返回void时本应返回ArrProcBuilder。我很高兴这件事发生了,因为我不明白。为什么需要在属于生成器类的方法中返回this?既然这些方法正在改变对象,最后一次调用.build()会返回带有这些参数的目标对象,为什么需要先返回任何东西呢 所以在newbuilder.x().y().z().build()中实际上创建了4个不同的对象:一个用于x,一个用于y,一个用于z和build 我试图使用生成器模式,但似乎有些不对劲。这个程序是用计算机编译的 ArrProcBuilde
ArrProcBuilder
。我很高兴这件事发生了,因为我不明白。为什么需要在属于生成器类的方法中返回this
?既然这些方法正在改变对象,最后一次调用.build()
会返回带有这些参数的目标对象,为什么需要先返回任何东西呢
所以在newbuilder.x().y().z().build()中代码>实际上创建了4个不同的对象:一个用于x,一个用于y,一个用于z和build
我试图使用生成器模式,但似乎有些不对劲。这个程序是用计算机编译的
ArrProcBuilder apBuild = new ArrProcBuilder(randData);
apBuild.addSwapSelection((byte)swap);
apBuild.addPivSelection((byte)pivot);
但有了这一点,我得到了一个“虚无不能被消除”的错误
这是我们的选举
public void addSwapSelection(byte swapSelection)
{
this.swapSelection = swapSelection;
}
addSwapSelection()不会像它应该返回的那样返回此
。如果方法addSwapFunction()返回对对象的引用,即其代码看起来像
public ArrProcBuilder addSwapSelection(byte b) {
//some code
//returns a reference to this object
return this;
}
然后,您可以像以前那样链接对addSwapFunction()的调用。我怀疑它的返回类型是void,这意味着您将无法进行可链接的调用。解引用是对象求值时发生的事情,因此“不能被解引用”可能意味着您正在使用变量作为对象,而它不是
这里,addSwapFunction()
返回对对象的引用。那么,addSwapSelection
的返回类型是什么?您应该显示代码的相关部分。您认为错误的含义是什么?寻求调试帮助的问题(“为什么此代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅。请包含ArrProcBuilder的源代码在第一个示例中,您正在apBuild
上运行addPivSelection
方法。在第二个示例中,您认为您正在哪个对象上调用它?
public ArrProcBuilder addSwapSelection(byte b) {
//some code
//returns a reference to this object
return this;
}