我有Pipe类:
public class Pipe {
private int length;
public Pipe(int length) {
this.length = length;
}
// plus getter and setter
}
然后是PipeGenerator类:
public class PipeGenerator {
private List<Pipe> pipeList;
public PipeGenerator(int numberOfPipes) {
List<Integer> availableTypes = generateAvailableTypes();
List<Pipe> pipes = createRandomPipesList(numberOfPipes, availableTypes);
this.pipeList.set(pipes);
// plus getter and setter
}
}
我的代码在Intellij中用红色高亮显示,我不明白为什么。这是一张图片:
createRandomPipesList方法:
private List<Pipe> createRandomPipesList(int numberOfPipes, List<Integer> availableTypes) {
List<Pipe> pipes = new ArrayList<Pipe>();
addPipesToList(numberOfPipes, availableTypes, pipes);
return pipes;
}
所以基本上我想生成一个List并将它设置为PipeGenerator类中的pipeList私有属性。会怎样做?
答案 0 :(得分:3)
List类的set方法没有按照您的想法进行。请参阅API http://docs.oracle.com/javase/8/docs/api/java/util/List.html#set-int-E-。
而只是分配新列表。
pipeList = pipes;
答案 1 :(得分:1)
现在,您正在将Pipes类型数组的管道添加到Pipes类型的数组中。因此,您要将数组添加到Pipes类型的数组中。将此与将一个整数添加到float类型的数组相比,它不起作用。
我认为你想将pipes.get(index)添加到pipelist。
for(int i = 0; i < numberOfPipes.size(); i++){
this.pipeList.set(i,pipes.get(i));
}
答案 2 :(得分:0)
找出List#set方法。它需要2个参数。第一个整数1需要在哪个索引处设置作为第二个参数传递的Object。