私は理解できない奇妙な振る舞いに遭遇しました。ジェネリックの@SuppressWarnings( "unchecked")を1行に追加すると、コンパイラエラーが発生する
文字列をジェネリックにキャストする必要があり、警告が表示されます。
Type safety : Unchecked cast from String to T
私はメソッド宣言 上
@SuppressWarnings("unchecked")
を追加した場合、それが正常に動作します。割り当ての上に追加すると、 eclipseにコンパイラエラーが発生します。
これは問題なく動作します。
@SuppressWarnings("unchecked")
public <T> T search(final String query){
T returnValue = null;
...
if(returnValue instanceof String){
returnValue = (T) collection.getString(attrName);
}
これは正常に動作しません。
public <T> T search(final String query){
T returnValue = null;
...
if(returnValue instanceof String){
@SuppressWarnings("unchecked") // Compiler error: "returnValue cannot be resolved to a type"
returnValue = (T) collection.getString(attrName);
}
警告を抑制する2つの方法の違いは何ですか?
は、ここに来た私は、エラー_理解していなかったので、「トークン 『結果』に構文エラーを、VariableDeclaratorIdはこのトークンの後に予想されます」。コンパイラが何をしようとしているのか、それがなぜ失敗するのか、あなたの説明は素晴らしいです!他の誰かがこの構文エラーを検索した場合に、このコメントを追加するだけです。 – user1438038