-1

私には方法があります:

public Object instantiateAlmostAnyType(String stringToParse, Class<?> targetType) {
  ...
  if (targetType.isEnum())
    return Enum.valueOf((Class)targetType, stringToParse);
}

動作しますが、コンパイラの警告が表示されます。すべてのreturn行:

クラスはrawタイプです。ジェネリック型クラスへの参照はパラメーター化する必要があります
列挙型は生の型です。ジェネリック型Enumへの参照はパラメーター化する必要があります
型安全性:型クラスの式は、クラスに準拠するためにチェックされていない変換が必要です
タイプの安全性:タイプEnumのジェネリックメソッドvalueOf(Class、String)のチェックされていない呼び出しvalueOf(Class、String)

警告を回避する方法(@suppressWarningsを除く)はありますか?キャストはいますか?

4

2 に答える 2

5
public <T extends Enum<T>> T instantiate(String stringToParse, Class<T> targetType) {
    ...
    return Enum.valueOf(targetType, stringToParse);
}

ここで、コンパイル時にClassインスタンスがenum型である必要があり、安全でないキャストを行う必要がないことを確認します。

于 2012-09-19T23:59:45.113 に答える
0

今まで解決策が見つからなかったので、不可能だと思います。誰かが私に答えをくれたら私はそれを受け入れます

于 2012-09-29T09:22:03.510 に答える