我是一个完全的初学者,我正在努力学习java。我读到了Autoboxing
和Unboxing
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
}
}
感谢您的帮助。
答案 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}
这有助于弄清楚发生了什么