Javaは、Integerパラメータに対してString.valueOf(int i)の代わりにString.valueOf(char [] data)を呼び出し、ClassCastExceptionをスローします

ラファウソカルスキ:

String.valueOfメソッドの呼び出しに問題があります。引数として、整数型を返すジェネリックメソッドを渡しました。そして、プログラムはString.valueOfメソッドを呼び出すために、返されたIntegerをchar []にキャストしようとするため、例外がスローされます。私が知っているように、StringにはオーバーロードされたvalueOf()メソッドがあり、そのうちの1つは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));
}

ここに画像の説明を入力してください

luk2302:

コンパイラは、Xあなたがそれを呼び出す方法を正しく推論することになっていますか?

に分割

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

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ