Me he topado con un comportamiento extraño que no entiendo.Agregar @SuppressWarnings ("desmarcado") en genéricos a una sola línea genera error del compilador de eclipse
Tengo que lanzar un String a un genérico y está produciendo una advertencia.
Type safety : Unchecked cast from String to T
Si añado
@SuppressWarnings("unchecked")
por encima de la declaración de método que trabaja muy bien.Si lo agrego arriba de la asignación, produce un error de compilación en eclipse.
Esto funciona bien.
@SuppressWarnings("unchecked")
public <T> T search(final String query){
T returnValue = null;
...
if(returnValue instanceof String){
returnValue = (T) collection.getString(attrName);
}
Esto no funciona bien.
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);
}
¿Alguna idea de qué causa la discrepancia entre los dos métodos para suprimir la advertencia?
Vine aquí, porque no entiendo el error _ "Error de sintaxis en 'Resultados' tokens, VariableDeclaratorId espera después de esta señal" _ en Eclipse. Tu explicación de lo que intenta el compilador y por qué falla es genial. Solo agregue este comentario, en caso de que alguien más busque este error de sintaxis. – user1438038