Pourquoi sommes-nous autorisés à avoir une méthode principale finale en java?


Quelqu'un peut-il me dire l'utilisation de la méthode main comme finale en java.

Alors que cela est autorisé en java

public static final void main(String[] args) {  



}

Je ne vois aucune utilité de le rendre final. quoi qu'il en soit, il est statique, nous ne pouvons donc pas le remplacer.

Author: aioobe, 2014-09-25

1 answers

Ajouter final à une méthode statique peut réellement faire une différence. Considérons le code suivant:

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
    }
}

Ajouter final à A.main empêcherait la dissimulation accidentelle de A.main. En d'autres termes, l'ajout de final à A.main garantit que B.main n'est pas autorisé, et que C.main, par conséquent, imprime "A", par opposition à, par exemple "B".

Pourquoi sommes-nous autorisés à avoir une finale principale méthode en java?

À côté du cas d'angle ci-dessus, en ajoutant final à un statique la méthode ne fait pas beaucoup de différence, donc je ne vois pas un grand intérêt à ajouter une règle pour la refuser.

Plus d'informations disponibles ici: Comportement de la méthode statique finale

 10
Author: aioobe, 2017-05-23 11:53:47