Я наткнулся на странное поведение, которое я не понимаю.
Я должен привести строку к универсальному, и он выдает предупреждение.
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);
}
Есть идеи, что вызывает несоответствие между двумя методами подавления предупреждения?