Olá:
eu tenho a seguinte interface:
public interface Entidade<PK extends Serializable> {
public PK getId();
public void setId(PK id);
}
Daí criei a seguinte implementação:
public abstract class AbstractEntidade<PK extends Serializable> implements Entidade {
private PK id;
@Override
public PK getId() {
return this.id;
}
@Override
public void setId(PK id) {
this.id = id;
}
}
Entretanto o Eclipse apresenta os seguintes erros:
Sendo que o último item é uma advertência, não um erro.
Minhas tentativas de solucionar isso foram as seguintes:
: Simplesmente eliminar o “” depois de AbstractEntidade: O compilador deixou de reconhecer PK.
:? : Eliminar a relação com Entidade (eliminar o “implements Entidade”): Funciona, mas… não é bem isso que eu queria.
: Retirar o @Override* de setId(): Elimina o segundo erro (The method setId(PK) of type AbstractEntidade must override or implement a supertype method) mas mantém o primeiro e a advertência.
:? : Na interface retirar o vinculo de PK com Serializable ( ao invés de ) mas continuar mantendo na implementação (AbstractEntidade continua com ): Sem o @Override* sobre setId() os erros desaparecem mas permanece a advertência. Se o @Override* voltar o segundo erro.
- O @Override foi gerado pelo Eclipse.
Suponho que isso tenha alguma coisa a ver com os erasure dos Generics (vide o primeiro erro). Alguém tem uma solução mais inteligente?
Grato,