Як main
не можна використовувати як ідентифікатор, тоді як він використовується як ідентифікатор для оголошення "основного" методу?
Для такої класичної ідіоми:
public class Foo{
public static void main(String[] args){
}
}
main
це не ключове слово, і це, ймовірно, ніколи не буде ключовим словом на Java з очевидних причин ретро сумісності.
Щодо питання, чи є main
хороший ідентифікатор?
По-перше: дійсний для компілятора не означає обов'язково добре.
Наприкладjava1234
варіант також є дійсним ідентифікатором, але цього слід уникати.
main
має дуже особливе і важливе значення: він використовується як метод точки введення класів і jar, виконаних java
командним рядком.
Використання main
для імені методу, який не заповнює критерії, що використовуються в java
командному рядку, було б просто оманливим при використанні його як імені змінної або імені класу може мати сенс.
Наприклад, визначення класу, що представляє точку входу програми як Main
клас програми, є прийнятним, і таким чином, використовуючи його як назву змінної, наприклад:
public class Main {
public static void main(String args[]){
Main main = new Main();
// ...
}
}
Загалом у Java кілька символів або "слів" вважаються дійсними ідентифікаторами для компілятора, але сильно не рекомендується використовувати їх у клієнтському коді (але згенерований код може це робити: наприклад, вкладені класи) як нечитабельні та / або насправді вводить в оману.
Наприклад, це може бути дійсним для компілятора:
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$);
}
}
Але ми не хочемо:
- назвати
Object
наш клас так, як це визначено вjava.lang
(1).
- назвати метод,
main()
якщо він не заповнює критерії, якими повинен користуватисяjava
командним рядком (2).
- перевантажувати
Object.toString()
метод (3).
- назвати наші змінні з
_
, $
або будь-якими несподіваними / unmeaningful символів , які йдуть проти спільних угод про іменах (4).