自动装箱不能将int转换为整数

时间:2014-07-05 23:48:14

标签: java

我是一个完全的初学者,我正在努力学习java。我读到了AutoboxingUnboxing here的概念。

我正在使用java版本1.8.0_05并使用Eclipse。

代码是:

class Test {
    public static void main(String[] args) {
        Integer iob = 100; // shows error -> Type mismatch: Cannot convert from int to Integer
    }
}

感谢您的帮助。

3 个答案:

答案 0 :(得分:15)

您需要将语言级别设置为至少1.5 / 5.0才能利用自动装箱/取消装箱。

Project --> Properties --> Java Compiler更改您的设置,可能是,它没有设置到正确的级别。

请注意,这并不直接与您正在使用的JDK版本相关联,它只是表示将您的java代码解释为不高于语言级别版本的级别,使用任何特定的JDK的版本至少等于或高于给定的语言级别设置。

IE:您正在使用JDK 1.8+,将语言级别设置为5.0意味着您只能使用高达JDK 1.5的Java功能。

答案 1 :(得分:1)

听起来你在Eclipse中设置了错误的语言级别。

请参阅@Override gives error in eclipse?

  

更改语言级别转到项目>属性> Java编译器并在那里设置语言级别。您可能需要单击以启用项目特定设置。

答案 2 :(得分:0)

自Java 1.5以来,可以使用自动装箱功能。

确保您至少运行Java 1.5。

否则您需要新的Integer(100)或Integer.valueOf(100)。或者只是将其声明为int而不是Integer。

您可以使用以下方法检查路径 JAVA_HOME

Object obj = System.getenv();
System.out.println(obj);

您应该得到如下输出:

  

{JAVA_MAIN_CLASS_5612 = org.eclipse.jdt.internal.junit.runner.RemoteTestRunner,   SHELL = /斌/庆典,   TMPDIR = /变种/文件夹/ ZW / n554nzl151sgtr5rqftblcjm0000gn / T /,   com.apple.java.jvmMode = client,__ CF_USER_TEXT_ENCODING = 0x1F5:0:0,   APP_ICON_5439 = .. /资源/ sts.icns,    PATH = / usr / bin:/ bin:/ usr / sbin:/ sbin:/Users/fede/jdk1.8/bin JAVA_HOME = / Users / fede / jdk1.8 / ,USER = fede,   com.apple.java.jvmTask = CommandLine_Manual.java,HOME = / Users / fede,   LOGNAME = fede,Apple_PubSub_Socket_Render = / tmp / launch-5UzUjs / Render,   SSH_AUTH_SOCK = / tmp / launch-2okgJL / Listeners,__ CHECKFIX1436934 = 1,   JAVA_STARTED_ON_FIRST_THREAD_5439 = 1}

这有助于弄清楚发生了什么