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]));。我尝试将返回类型更改addInt为List和int,但都不起作用。
您正在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)
| 归档时间: |
|
| 查看次数: |
99 次 |
| 最近记录: |