++(new Integer(100)); //错误

rgh*_*rgh 1 java

谁能告诉我为什么我在这里得到编译器错误?

class NewInteger{
  public static void main(String[] args){
    Integer i = new Integer(200);
    Integer j = ++i;                    //ok
    Integer k = ++(new Integer(300));   //compile error: unexpected type
                                        //               required: variable
                                        //               found: value
  }
}
Run Code Online (Sandbox Code Playgroud)

在我看来,违规行只是它前面两个版本中的一个版本.

T.J*_*der 8

++从变量读取,增加读取的值,并写回变量.new Integer(300)不是变量,你不能写它.

这是两个例子之间的关键区别:在这种j = ++i情况下,++它可以写回(i).在第二种情况下,它没有.


(在这里使用"变量"JLS经常[虽然奇怪地不总是]的方式,表示局部变量和实例或类字段.)