Perché ci è permesso avere un metodo principale finale in java?
Qualcuno può dirmi l'uso di rendere il metodo main come final in java.
Mentre questo è consentito in java
public static final void main(String[] args) {
}
Non vedo alcun uso di renderlo definitivo. ad ogni modo è statico, quindi non possiamo ignorarlo.
1 answers
L'aggiunta di final
a un metodo statico può effettivamente fare la differenza. Si consideri il seguente codice:
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
}
}
L'aggiunta di final
a A.main
impedirebbe il nascondimento accidentale di A.main
. In altre parole, l'aggiunta di final
a A.main
garantisce che B.main
non è consentito e che C.main
stampa quindi "A"
al contrario di "B"
.
Perché ci è permesso avere un metodo principale finale in java?
Accanto al caso d'angolo sopra, aggiungendo final
a una statica il metodo non fa molta differenza, quindi non vedo un grande punto nell'aggiungere una regola per non consentirla.
Maggiori informazioni disponibili qui: Comportamento del metodo statico finale