Remplacer la méthode avec signature différente
J'ai une super-classe de la méthode:
protected <E extends Enum<E>,T extends VO> void processarRelatorioComEstado(Date dataInicial, Date dataFinal, E estado) throws RelatorioException {
throw new UnsupportedOperationException("method not overridden");
}
et dans l'un de ses sous-classes, je veux faire ce qui suit:
@Override
protected <E extends Enum<E>> DemonstrativoReceitaDespesasAnexo12Vo processarRelatorioComEstado(Date dataInicial, Date dataFinal, E estado) throws RelatorioException {
//do something
return DemonstrativoReceitaDespesasAnexo12Vo;
}
mais cela ne fonctionne tout simplement pas. Le problème est que j'ai une référence à une super-classe, et j'ai envie d'appeler cette méthode, mais seulement dans l'une des sous-classes.
Ce n'est pas primordial si la signature est différente.
OriginalL'auteur danillosl | 2013-09-12
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas changer le nombre de paramètres de type de la méthode de remplacement. Pour votre cas, remplacer clairement échoue avec le type de retour. Mais même si les types de retour étaient les mêmes, votre méthode ne serait pas encore remplacer équivalent, vous avez de moins en moins de paramètres de type dans la soi-disant méthode redéfinie.
De JLS - Signature de la Méthode:
Donc, même le code suivant devrait échouer:
Que la méthode
show()
dans la classe n'est pas de remplacer l'équivalent de la méthode dans l'interface, en raison du nombre de paramètres de type.Donc, vous devriez assurez-vous que la signature de la méthode est exactement la même, tel que précisé dans JLS section (Même nom, même nombre et le type des paramètres (y compris les paramètres de type), co-variant le type de retour).
OriginalL'auteur Rohit Jain
Selon java overridding
Ici votre méthode de type de retour est différent de sorte qu'il n'est pas overridding.
vous avez besoin de changer le type de retour de la super-classe de la méthode de
DemonstrativoReceitaDespesasAnexo12Vo
devoid
aussi.OriginalL'auteur Prabhaker
La lecture des commentaires ci-dessus, je comprends que l'approche ne fonctionne pas, donc je fais quelques modifications dans le code et travailler comme un charme, suit le code:
superclasse:
et de la sous-classe:
merci les gars.
OriginalL'auteur danillosl