L'aggiunta di final
a un metodo statico può effettivamente fare la differenza. Si consideri il codice seguente:
class A {
public static void main(String[] args) {
System.out.println("A");
}
}
class B extends A {
public static void main(String[] args) {
System.out.println("B");
}
}
class C extends B {
}
public class Test {
public static void main(String[] args) {
C.main(args); // Will invoke B.main
}
}
Aggiunta final
a A.main
impedirebbe nascondere accidentale A.main
. In altre parole, l'aggiunta final
a A.main
garantisce che B.main
non è permesso, e che C.main
stampa quindi "A"
rispetto a, per esempio "B"
.
Perché siamo permesso di avere un metodo main finale in java?
Accanto al caso angolo sopra, aggiungendo final
ad un metodo statico non fa molta differenza, quindi non vedo un grande punto in aggiunta di una regola per non consentendo esso.
Maggiori informazioni sono disponibili qui: Behaviour of final static method
A meno che non si sta utilizzando questo metodo 'main' per altro che iniziare la vostra applicazione, non c'è assolutamente alcuna ragione per farlo' final'. –