繁体   English   中英

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方法的问题。 作为参数,我传递了返回Integer类型的泛型方法。 然后引发异常,因为程序尝试将返回的Integer强制转换为char []以调用String.valueOf方法。 据我所知,String已经重载了valueOf()方法,其中一个可以采用Integer参数。

下面是Eclipse表达式评估的截图,显示了情况。

评估表达

该行抛出ClassCastException

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

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

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);

如果您知道返回类型是Integer类型,则应该尝试使用Integer.toString方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM