Come main
potrebbe non essere usato come identificatore mentre è usato come identificatore per dichiarare il metodo "principale"?
Per un linguaggio così classico:
public class Foo{
public static void main(String[] args){
}
}
main
non è una parola chiave e probabilmente non sarebbe mai una parola chiave in Java per ovvi motivi di retro compatibilità.
A proposito della domanda, è main
un buon identificatore?
Primo: valido per un compilatore non significa necessariamente buono.
Ad esempio, l' java1234
opzione che viene proposta è anche un identificatore valido ma che dovrebbe davvero essere evitato.
main
ha un significato molto particolare e importante: viene utilizzato come metodo del punto di ingresso di classi e vasetti eseguiti dalla java
riga di comando.
L'uso main
di un nome di metodo che non soddisfa i criteri da utilizzare dalla java
riga di comando sarebbe fuorviante mentre lo si utilizza come nome di variabile o nome di classe potrebbe avere senso.
Ad esempio, definire la classe che rappresenta il punto di ingresso di un'applicazione come Main
classe dell'applicazione è accettabile e quindi usarlo anche come nome di variabile come:
public class Main {
public static void main(String args[]){
Main main = new Main();
// ...
}
}
In generale, in Java, più caratteri o "parole" sono considerati identificatori validi per il compilatore ma sono fortemente sconsigliati di essere utilizzati nel codice client (ma il codice generato può farlo: classi nidificate ad esempio) come non leggibili e / o davvero fuorviante.
Ad esempio, questo potrebbe essere valido per il compilatore:
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$);
}
}
Ma non vogliamo:
- nominare la
Object
nostra classe come questa è definita in java.lang
(1).
- nominare un metodo
main()
se non soddisfa i criteri da utilizzare dalla java
riga di comando (2).
- per sovraccaricare il
Object.toString()
metodo (3).
- nominare le nostre variabili con
_
, $
o qualsiasi carattere sorprendente / indesiderato che vada contro le convenzioni di denominazione condivise (4).