Добавить @suppresswarnings («не проверяемую») в общих строках генерирует ошибку компилятора Eclipse

Я наткнулся на странное поведение, которое я не понимаю.

Я должен отбрасывать строку в общедоступную и оно производит предупреждение.

Type safety : Unchecked cast from String to T
  • Если я добавлю @suppresswarnings («без проверки») выше метода объявления Работает нормально.

  • Если я добавляю его выше назначения, он производит ошибку компилятора в затмение.

Это работает нормально.

@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);
 }

Любая идея, что вызывает несоответствие между двумя методами подавления предупреждения?

32
задан Farmor 12 September 2011 в 12:21
поделиться