为什么自动拳击工作在日食而不是在javac?

Nic*_*ico 18 java eclipse

这段代码:

Integer ints[] = new Integer[]{'1', '2', '3'};
Run Code Online (Sandbox Code Playgroud)

在eclipse中编译得很好,但是javac(版本1.6.0_27和1.7.0)都会出现以下错误:

BoxTest.java:4: incompatible types
found   : char
required: java.lang.Integer
               Integer ints[] = new Integer[]{'1', '2', '3'};

BoxTest.java:4: incompatible types
Run Code Online (Sandbox Code Playgroud)

为什么?

我认为它是某种编译器标志,但是通过eclipse来挖掘它并不完全是直截了当的.

sti*_*vlo 6

什么javac不做,不是自动装箱,而是自动演员.在javac其中汇编:

Integer ints[] = new Integer[] { (int) '1', (int) '2', (int) '3' };
Run Code Online (Sandbox Code Playgroud)

只有一个发生同样的事情Integer,再一次javac,我要进行显式转换来编译:

Integer a = (int) '1';
Run Code Online (Sandbox Code Playgroud)

但这是我发现的.即使没有强制转换,从命令行使用Eclipse JDT批处理编译器也可以工作:

$ java -jar org.eclipse.jdt.core_3.7.1.v_B76_R37x.jar -classpath rt.jar \
  -1.6 Appo.java 
Run Code Online (Sandbox Code Playgroud)

我已经看过了选项,javac我认为没有办法改变这种行为.

我要推断,差异是由于Eclipse不是在javac内部使用,而是由JDT编译器引起的.