让我们考虑一下我有以下课程:
class A {
int i, j, k;
public A(int i, int j, int k) {
this.i = i; this.j = j; this.k = k;
}
}
其中i
, j
,k
有一个已知范围:r_i
, r_j
, r_k
. 现在我想A
在这个范围内生成所有可能的实例。我可以想出类似的东西:
Stream.iterate(0, n -> ++n).limit(r_i)
.flatMap(i -> Stream.iterate(0, n -> ++n).limit(r_j)
.flatMap(j -> Stream.iterate(0, n -> ++n).limit(r_k)
.map(k -> new A(i, j, k)))).collect(Collectors.toList())
首先,它太冗长了。有没有办法缩短它?特别是我找不到range
on Stream
。其次,编译器无法确定返回类型的类型。它认为它
List<Object>
而不是预期的List<A>
。我该如何解决?