Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 不能取消对void的引用;尝试使用生成器模式_Java_Builder - Fatal编程技术网

Java 不能取消对void的引用;尝试使用生成器模式

Java 不能取消对void的引用;尝试使用生成器模式,java,builder,Java,Builder,编辑:我在返回void时本应返回ArrProcBuilder。我很高兴这件事发生了,因为我不明白。为什么需要在属于生成器类的方法中返回this?既然这些方法正在改变对象,最后一次调用.build()会返回带有这些参数的目标对象,为什么需要先返回任何东西呢 所以在newbuilder.x().y().z().build()中实际上创建了4个不同的对象:一个用于x,一个用于y,一个用于z和build 我试图使用生成器模式,但似乎有些不对劲。这个程序是用计算机编译的 ArrProcBuilde

编辑:我在返回void时本应返回
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;
}