Ho una classe astratta e una classe che la estendono, ho un metodo con lo stesso nome in entrambe le classi. Voglio chiamare il metodo in classe astratta in un altro metodo di classe astratta.Metodo di chiamata da un altro metodo in classe astratta con lo stesso nome nella classe reale
Controller.java
public abstract class Controller {
public Result delete(Long id) {
return this.delete(id, true);
}
public Result delete(Long id, boolean useTransaction) {
// do something and return result
}
}
FileGroup.java
public class FileGroup extends Controller {
public Result delete(Long id, boolean central) {
// do something
return super.delete(id);
}
}
super.delete
chiamata Controller.delete
ma this.delete(id, true)
chiamata delete
in FileGroup
invece di chiamare delete
in Controller
che sta causando ricorsiva ciclo infinito e lo stack overflow.
@aioobe Non è del tutto chiaro. Perché l'OP non ha scritto 'super.delete (id, central)'? Può essere che l'OP voglia effettivamente 'delete' in' FileGroup' per chiamare l'argomento 'delete' in Controller che a sua volta chiama i due argomenti' delete' in 'Controller' senza causare un loop infinito. –
* "Perché l'OP non ha scritto super.delete (id, centrale)?" * - Perché quello sarebbe un override inutile. * "[...] senza causare un loop infinito." * - Sì, è quello che assumerei (ed è quello che indirizzo nella mia risposta). – aioobe
Non sarebbe un override inutile a causa del "// fare qualcosa". –