MyEclipse无法实现AutoBoxing/AutoUnBoxing问题

MyEclipse无法实现AutoBoxing/AutoUnBoxing问题

问题描述:

程序代码如下:

import java.util.HashMap;
import java.util.Map;

public class WordConstants {
private static Map typeNameValue=new HashMap();
static{
[color=red]typeNameValue.put("a", 1);
typeNameValue.put("an", 2);
typeNameValue.put("i", 3);
typeNameValue.put("j", 4);
typeNameValue.put("l", 5);
typeNameValue.put("Ng", 6);
typeNameValue.put("n", 7);
typeNameValue.put("nr", 8);
typeNameValue.put("ns", 9);
typeNameValue.put("nt", 10);
typeNameValue.put("nz", 11);
typeNameValue.put("v", 12);
typeNameValue.put("vm", 13);[/color] }
public static int getTypeByName(String _sName){
[color=blue]return typeNameValue.get(_sName);[/color] }
}

红色部分提示“The method put(String,Integer) in the type Map(String,Integer) is not applicable for the arguments(String,int)”
蓝色部分提示“Tye mismatch: cannot convert from Integer to int”
上段代码在命令行环境下运行却可顺利编译

在同样的MyEclipse环境下,不同的工程中,另一段相似代码却没有提示出错信息。相似代码如下:

package com.pureinfo.segword;

import java.util.HashMap;
import java.util.Map;

public class WordConstants {
/************************************************************/
// 常量定义部分 //
/************************************************************/
// public static int HL_CAL_OPT_KEYWORD = 0x1; //计算关键词附加标识
// public static int HL_CAL_OPT_FINGER = 0x2; //计算文章语义指纹标识
// public static int HL_CAL_OPT_POS = 0x4;//计算词性标识
// public static int HL_CAL_OPT_SEARCH = 0x8;//输出面向检索的分词结果

/************************************************************/
//          词性定义部分                                      //
/************************************************************/
public static final int NATURE_D_A = 0x40000000; // 形容词 形语素
public static final int NATURE_D_B = 0x20000000; // 区别词 区别语素
public static final int NATURE_D_C = 0x10000000; // 连词 连语素
public static final int NATURE_D_D = 0x08000000; // 副词 副语素
public static final int NATURE_D_E = 0x04000000; // 叹词 叹语素
public static final int NATURE_D_F = 0x02000000; // 方位词 方位语素
public static final int NATURE_D_I = 0x01000000; // 成语
public static final int NATURE_D_L = 0x00800000; // 习语
public static final int NATURE_A_M = 0x00400000; // 数词 数语素
public static final int NATURE_D_MQ = 0x00200000; // 数量词
public static final int NATURE_D_N = 0x00100000; // 名词 名语素
public static final int NATURE_D_O = 0x00080000; // 拟声词
public static final int NATURE_D_P = 0x00040000; // 介词
public static final int NATURE_A_Q = 0x00020000; // 量词 量语素
public static final int NATURE_D_R = 0x00010000; // 代词 代语素
public static final int NATURE_D_S = 0x00008000; // 处所词
public static final int NATURE_D_T = 0x00004000; // 时间词
public static final int NATURE_D_U = 0x00002000; // 助词 助语素
public static final int NATURE_D_V = 0x00001000; // 动词 动语素
public static final int NATURE_D_W = 0x00000800; // 标点符号
public static final int NATURE_D_X = 0x00000400; // 非语素字
public static final int NATURE_D_Y = 0x00000200; // 语气词 语气语素
public static final int NATURE_D_Z = 0x00000100; // 状态词
public static final int NATURE_A_NR = 0x00000080; // 人名
public static final int NATURE_A_NS = 0x00000040; // 地名
public static final int NATURE_A_NT = 0x00000020; // 机构团体
public static final int NATURE_A_NX = 0x00000010; // 外文字符
public static final int NATURE_A_NZ = 0x00000008; // 其他专名
public static final int NATURE_D_H = 0x00000004; // 前接成分
public static final int NATURE_D_K = 0x00000002; // 后接成分
public static final int NATURE_D_UN = 0x00000001; // 未知

private static Map<String, Integer> typeNameValue = new HashMap<String, Integer>();
static {
    typeNameValue.put("a", NATURE_D_A);
    typeNameValue.put("b", NATURE_D_B);
    typeNameValue.put("c", NATURE_D_C);
    typeNameValue.put("d", NATURE_D_D);
    typeNameValue.put("e", NATURE_D_E);
    typeNameValue.put("f", NATURE_D_F);
    typeNameValue.put("i", NATURE_D_I);
    typeNameValue.put("l", NATURE_D_L);
    typeNameValue.put("m", NATURE_A_M);
    typeNameValue.put("mq", NATURE_D_MQ);
    typeNameValue.put("n", NATURE_D_N);
    typeNameValue.put("o", NATURE_D_O);
    typeNameValue.put("p", NATURE_D_P);
    typeNameValue.put("q", NATURE_A_Q);
    typeNameValue.put("r", NATURE_D_R);
    typeNameValue.put("s", NATURE_D_S);
    typeNameValue.put("t", NATURE_D_T);
    typeNameValue.put("u", NATURE_D_U);
    typeNameValue.put("v", NATURE_D_V);
    typeNameValue.put("w", NATURE_D_W);
    typeNameValue.put("x", NATURE_D_X);
    typeNameValue.put("y", NATURE_D_Y);
    typeNameValue.put("z", NATURE_D_Z);
    typeNameValue.put("nr", NATURE_A_NR);
    typeNameValue.put("ns", NATURE_A_NS);
    typeNameValue.put("nt", NATURE_A_NT);
    typeNameValue.put("nx", NATURE_A_NX);
    typeNameValue.put("nz", NATURE_A_NZ);
    typeNameValue.put("h", NATURE_D_H);
    typeNameValue.put("k", NATURE_D_K);
    typeNameValue.put("un", NATURE_D_UN);
}

public static int getTypeByName(String _sName) {
    return typeNameValue.get(_sName);
}

}
迫切希望各位能帮忙解答,谢谢~

工程右键->properties->Java Compiler
看右边compiler compliance level 是不是4.0
是的话钩上上边的复选框,改成5.0或6.0

最上边有个Enable project specific settings的复选框,勾上就不是灰色的了

如果是5.0的应该可以自动装箱,要不再改成6.0试试(如果装了6.0JDK的话)

再看看Use default compliance settings下面右边的下拉框是不是4.0或1.4
如果是的话把Use default compliance settings的复选框去掉,改成5.0(也有的是1.5)

如果全是5.0以上还有这错误,那就我嘞个去了

好奇怪哦,解决了后说说是怎么回事

Integer需要导入说明编译器不是5.0的
Eclipse有问题了吧