有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

编辑:我正在返回void,而我本应该返回ArrProcBuilder。我很高兴这件事发生了,因为我不明白。为什么需要在属于生成器类的方法中返回this?既然这些方法正在对对象进行变异,并且对.build()的最后一次调用返回带有这些参数的目标对象,那么为什么需要先返回任何内容呢

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

我试图使用生成器模式,但有些地方似乎不正确。这个程序是用计算机编译的

    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);

这是我们的选举

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

共 (3) 个答案

  1. # 1 楼答案

    解引用是当对象被计算时发生的事情,所以“不能被解引用”可能意味着你正在使用一个变量作为对象,而它不是

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

  2. # 2 楼答案

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

  3. # 3 楼答案

    如果方法addSwapFunction()返回对对象的引用,即其代码类似

    public ArrProcBuilder addSwapSelection(byte b) {
        //some code
    
        //returns a reference to this object
        return this;
    }
    

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