1

私は古いコードを生成しようとしていInteger.classますInteger.TYPE..入力クラス)。これは変換の候補のようです (まだどこかに存在しない場合)。だから、私はこのようなものを持っています:

public static <T> Class<T> convert(Class<T> type) {
    if (type == Integer.class) return Integer.TYPE;
    // and so on
    return type;
}

このコードの問題は、コンパイラ自体が if ブロックで を確認したことをT == Integer認識していないことInteger.TYPEです。もちろん、いつでも明示的にキャストできClass<T>ます。問題は、このキャストは安全であり、@SuppressWarnings("unchecked")注釈を追加しても問題ないかどうかです。

4

1 に答える 1

0

@SuppressWarnings("unchecked")ここでは問題ないはずです。各ラッパー クラスがそのフィールドを , としてW宣言していることはわかっています。おそらく、その合理性を説明するコメントを追加するだけです。TYPEClass<W>

GuavaPrimitives.unwrapを使用している場合は、すでにこれを処理する必要があることに注意してください。

于 2012-11-18T23:18:51.160 に答える