[英]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.