Se creo un'istanza di una classe in Java, perché è preferibile chiamare staticamente un metodo statico di quella stessa classe piuttosto che usare this.method()?Perché è preferibile chiamare staticamente un metodo statico all'interno di un'istanza della classe del metodo?
Viene visualizzato un avviso da Eclipse quando provo a richiamare il metodo statico staticMethod() dal costruttore della classe personalizzata tramite this.staticMethod().
public MyClass() { this.staticMethod(); }
vs
public MyClass() { MyClass.staticMethod(); }
qualcuno può spiegare il motivo per cui questa è una cattiva cosa da fare? Mi sembra che il compilatore avrebbe già dovuto assegnare un'istanza dell'oggetto, quindi l'allocazione statica della memoria sarebbe un sovraccarico non necessario.
EDIT:
Il nocciolo di quello che sto sentendo è che questo è cattiva pratica soprattutto a causa della leggibilità, e comprensibilmente. Quello che stavo veramente cercando di chiedere (anche se non molto chiaramente) era quali differenze ci siano nella "compilazione", se ce ne sono, tra chiamare MyClass.staticMethod() o this.staticMethod().
Non sostituire i metodi statici, li nascondono. L'override implica il polimorfismo, che non si ottiene con i metodi statici. – TofuBeer
@TofuBeer grazie, non ero abbastanza preciso nella mia terminologia. Dal punto di vista di qualcuno che usa 'this' su un metodo statico, potrebbe implicare una sorta di intenzione per il polimorfismo, che non funzionerà. – Ash