Wie main es nicht als Bezeichner verwendet werden, während es als Bezeichner zum Deklarieren der "Haupt" -Methode verwendet wird?
Für solch eine klassische Sprache:
public class Foo{
public static void main(String[] args){
}
}
main ist kein Schlüsselwort und würde aus offensichtlichen Gründen der Retro-Kompatibilität wahrscheinlich nie ein Schlüsselwort in Java sein.
Über die Frage ist main eine gute Kennung?
Erstens: Gültig für einen Compiler bedeutet nicht unbedingt gut.
Zum Beispiel diejava1234 ist die vorgeschlagene Option auch eine gültige Kennung, aber das sollte wirklich vermieden werden.
mainhat eine ganz besondere und wichtige Bedeutung: Sie wird als Einstiegspunktmethode für Klassen und Jars verwendet, die von der javaBefehlszeile ausgeführt werden .
Die Verwendung maineines Methodennamens, der die von der javaBefehlszeile zu verwendenden Kriterien nicht erfüllt, wäre nur irreführend, wenn er als Variablenname oder Klassenname verwendet wird.
Beispielsweise Mainist es akzeptabel , die Klasse, die den Einstiegspunkt einer Anwendung darstellt, als Klasse der Anwendung zu definieren und sie daher auch als Variablennamen zu verwenden, z.
public class Main {
public static void main(String args[]){
Main main = new Main();
// ...
}
}
Im Allgemeinen werden in Java mehrere Zeichen oder "Wörter" als gültige Bezeichner für den Compiler betrachtet, es wird jedoch dringend davon abgeraten, sie im Client-Code zu verwenden (generierter Code kann dies jedoch tun: verschachtelte Klassen zum Beispiel) als nicht lesbar und / oder wirklich irreführend.
Dies könnte beispielsweise für den Compiler gültig sein:
public class Object { // 1
public void foo() {
...
}
}
public class BadChosenIdentifier {
public static void main() { // 2
new BadChosenIdentifier().toString(new Object());
}
public void toString(Object java1234) { // 3, 4
String _result$ = java1234 + " -> to avoid"; // 4
System.out.println(_result$);
}
}
Aber wir wollen nicht:
- um
Objectunsere Klasse so zu benennen , wie dies in java.lang(1) definiert ist.
- um eine Methode zu benennen,
main()wenn die von der javaBefehlszeile zu verwendenden Kriterien nicht erfüllt sind (2).
- um die
Object.toString()Methode (3) zu überladen .
- unsere Variablen mit nennen
_, $oder bei einem der überraschenden / unmeaningful Zeichen , die gegen die gemeinsamen Benennungskonventionen gehen (4).