收到错误消息:错误:此处不允许“void”类型

1 java

首先我有一个类,该类有一个 void 方法:

class IntGroup {
    int size;
    List<int[]> intervals;
    
    public IntGroup() {
        this.size = 0;
        this.intervals = new ArrayList<>();
    }
        
    public void addInt(int[] interval) {
        this.intervals.add(interval);
        this.size++;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后当我尝试创建一个列表时,创建一个新对象并调用该方法

// int[][] intervals
List<IntGroup> list = new ArrayList<>();
list.add(new IntGroup().addInt(intervals[0]));
Run Code Online (Sandbox Code Playgroud)

我收到错误消息error: 'void' type not allowed here list.add(new IntGroup().addInt(intervals[0]));。我尝试将返回类型更改addIntListint,但都不起作用。

Jon*_*eet 7

您正在list.add使用“从方法返回的任何内容addInt”进行调用...但是该addInt方法是使用void返回类型声明的...它不返回任何内容,因此您不能使用返回值。

解决此问题的两个选项:

1)更改addInt返回IntGroup

public IntGroup addInt(int[] interval) {
    this.intervals.add(interval);
    this.size++;
    return this;
}
Run Code Online (Sandbox Code Playgroud)

此时,现有的list.add调用是有效的,因为addInt返回一个IntGroup- 与调用它的引用相同的引用。

这是某些 API 中相当常见的模式,例如StringBuilder,但尚不清楚它是否适合于此。

2)将调用list.add与调用addInt分离

只需使用局部变量来“记住”您正在使用的组:

IntGroup group = new IntGroup();
group.add(intervals[0]);
list.add(group);
Run Code Online (Sandbox Code Playgroud)