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.
main
hat eine ganz besondere und wichtige Bedeutung: Sie wird als Einstiegspunktmethode für Klassen und Jars verwendet, die von der java
Befehlszeile ausgeführt werden .
Die Verwendung main
eines Methodennamens, der die von der java
Befehlszeile zu verwendenden Kriterien nicht erfüllt, wäre nur irreführend, wenn er als Variablenname oder Klassenname verwendet wird.
Beispielsweise Main
ist 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
Object
unsere Klasse so zu benennen , wie dies in java.lang
(1) definiert ist.
- um eine Methode zu benennen,
main()
wenn die von der java
Befehlszeile 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).