0

我正在使用 Eclipse 项目中的一些现有代码。在下面调用的方法中,即使在调试代码时可以看到它cardTypeForPbfValue(),我也找不到密钥。填充如下HashMappbfValueMap

[1=ATM, 2=DEBIT, 3=CREDIT, 4=PAYROLL]

我不确定为什么CREDIT在下面传入值 3 时无法获得相关值cardTypeForPbfValue()。我实际上得到了NULL.

任何帮助/方向将不胜感激。

这是我正在使用的代码:

public static enum CardType {
    CREDIT(3),
    ATM(1),
    DEBIT(2),
    PAYROLL(4);
    CardType(int pbfValue) {
        this.pbfValue = (short) pbfValue;
    }

    public static HashMap<Short, CardType>  pbfValueMap = new HashMap<Short, CardType>();
    static {
        for (CardType cardType : CardType.values()) {
            short value = cardType.pbfValue;
            pbfValueMap.put(cardType.pbfValue, cardType);
        }
    }

    public static CardType **cardTypeForPbfValue**(int pbfValue) {
        CardType returnValue = pbfValueMap.get(pbfValue);
        if (returnValue == null) {
            returnValue = DEBIT;
        }
        return returnValue;
    }

    public short    pbfValue;
}
4

2 回答 2

6

您正在查找Integer,但您将 aShort放入地图中。尝试这个:

public static CardType cardTypeForPbfValue(int pbfValue) {
    Short shortPbfValue = (short) pdbValue;
    CardType returnValue = pbfValueMap.get(shortPbfValue);
    ...
}

更好的是,停止int在任何地方使用(或停止short在地图上使用)——只要在你想要使用的类型上保持一致。

于 2013-05-08T17:41:39.637 回答
1

我猜你正在使用Short作为键类型,而你正在寻找键中的值。HashMapInteger就是为什么你没有获得输入键的关联值的原因。要解决这个问题,您的cardTypeForPbfValue方法应该是这样的:

public static CardType cardTypeForPbfValue(short pbfValue)

无论在哪里,您调用该方法都会cardTypeForPbfValue将类型参数传递short给它。例如:

short s = 1;
CardType cType = cardTypeForPbfValue(s);
于 2013-05-08T17:42:44.530 回答