为什么这行代码在运行?

dan*_*ish -3 java object

public static void main(String[] args)
  {
List<Integer> list = new ArrayList<Integer> ();
list.add(6);
list.add(1);
list.add(8);

int len = list.size();
for (int i = 0; i < len; i++) {
    list.add(i+1, new Integer(i));
    System.out.println(list + "Iteration: " + i);
    Object x = list.set(i, new Integer(i+2));
}

System.out.println(list);
  }
Run Code Online (Sandbox Code Playgroud)

为什么这段代码有效?它将arraylist变成:

[6,0,1,8]迭代:0

[2,0,1,1,8]迭代:1

[2,3,1,2,1,8]迭代:2

[2,3,4,2,1,8]

但我不确定为什么这行编译:

 Object x = list.set(i, new Integer(i+2));
Run Code Online (Sandbox Code Playgroud)

是不是将对象分配给不返回任何内容的方法?

rge*_*man 5

set方法List返回之前在该位置的内容.

返回:

先前在指定位置的元素

这就是它编译的原因.