Java 为 Integer 参数调用 String.valueOf(char[] data) 而不是 String.valueOf(int i) 并抛出 ClassCastException

Java invokes String.valueOf(char[] data) instead of String.valueOf(int i) for Integer parameter and throw ClassCastException

我在调用 String.valueOf 方法时遇到问题。作为参数,我传递了 returns 整数类型的通用方法。然后抛出异常,因为程序试图将返回的 Integer 转换为 char[] 以调用 String.valueOf 方法。据我所知,String 已经重载了 valueOf() 方法,其中之一可以采用 Integer 参数。

下面是显示情况的 Eclipse 表达式计算的屏幕截图。

这一行抛出 ClassCastException

String quality = String.valueOf(model.get(property));

这就是 model.get(属性) 调用的内容:

public <X> X get(String property) {
        X value = null;
        try {
            if (allowNestedValues && NestedModelUtil.isNestedProperty(property)) {
                return (X) NestedModelUtil.getNestedValue(this, property);
            }
            if (map != null) {
                Object objValue = map.get(property);
                if (objValue != null)
                    value = (X) objValue;
            }
        } catch (Exception e) {
        }
        return map == null ? null : value;
    }

编辑:

我添加了这个条件,编译器进入了 if 语句

if(model.get(property) instanceof Integer)
{
    quality = String.valueOf(model.get(property));
}

编译器如何按照您的调用方式推断出正确的 X

拆分成

YourType qualityRaw = model.get(property);
String quality = String.valueOf(qualityRaw);

如果您知道您的 return 类型是 Integer 类型,您应该尝试 Integer.toString 方法。