ubstituir a classe do parâmetro no método se estender a do parâmetro usado no método abstra
uponha que eu tenha as quatro classes a seguir, das quais duas são abstratas e duas são concretaAbstract1
, Concrete1
, Abstract2
, Concrete2
.
Concrete1
estendeAbstract1
eConcrete1
estendeAbstract1
.
uponha que eu tenha as quatro classes a seguir, das quais duas são abstratas e duas são concretaAbstractProp
, ConcreteProp
, AbstractClass
, ConcreteClass
.
ConcreteProp
estendeAbstractProp
eConcreteClass
estendeAbstractClass
.
O código paraAbstractClass
teria a seguinte aparência:
public abstract class AbstractClass {
protected AbstractProp someProperty;
public abstract void setProperty(AbstractProp someProperty);
}
Quando implementandoConcreteClass
, Quero poder fazer algo assim (lembre-se de queAbstractProp
estende `ConcreteProp):
public class ConcreteClass extends AbstractClass {
@Override
public void setProperty(ConcreteProp someProperty) {
this.someProperty = someProperty;
}
}
Mas este último bit de código não é válido porque as classes dos parâmetros AbstractProp
eConcreteProp
) emsetProperty()
diferem, tornando o@Override
anotação inválida. Existe uma maneira de realizar o que estou tentando fazer aqui, talvez usando genéricos e / ou curingas?
NOTA Estou ciente de que esse tipo de nomeação é uma prática ruim e o código é simplista demais, na verdade não estou usando isso e este é apenas um exemplo para manter a pergunta o mais simples possíve