无法解除引用无效;试图使用建设者模式

时间:2014-08-07 19:40:11

标签: java builder

编辑:当我应该返回ArrProcBuilder时,我回来了。我很高兴发生这件事,因为我不明白。为什么需要在属于构建器类的方法中返回this?由于这些方法正在改变对象,并且最后一次调用.build()会返回带有这些参数的目标对象,为什么需要在事先返回任何内容?

所以new builder.x().y().z().build();实际上创建了4个不同的对象:一个用于x,一个用于y,一个用于z和构建?

我试图使用构建器模式,但某些东西看起来并不正确。该程序用

编译
    ArrProcBuilder apBuild = new ArrProcBuilder(randData);
    apBuild.addSwapSelection((byte)swap);
    apBuild.addPivSelection((byte)pivot);

但是有了这个,我得到了一个"虚空无法降低"错误。

    ArrProcBuilder apBuild = new ArrProcBuilder(randData);
    apBuild.addSwapSelection((byte)swap).addPivSelection((byte)pivot);

这是addSwapSelection

public void addSwapSelection(byte swapSelection)
{
    this.swapSelection = swapSelection;
}

3 个答案:

答案 0 :(得分:1)

addSwapSelection()不会像它应该那样返回this

答案 1 :(得分:1)

如果方法 addSwapFunction()返回对象的引用,即其代码看起来像

public ArrProcBuilder addSwapSelection(byte b) {
    //some code

    //returns a reference to this object
    return this;
}

然后你可以像你一样链接到 addSwapFunction()的调用。我怀疑它的返回类型是无效的,这意味着你将无法进行可链接的调用。

答案 2 :(得分:0)

取消引用是在评估对象时发生的事情,因此“无法解除引用”可能意味着您将变量用作对象,而不是。

这里addSwapFunction()返回对象的引用。