どうやって main
「メイン」メソッドを宣言するための識別子として使用されている間、識別子として使用することができませんでしたか?
そのような古典的なイディオムの場合:
public class Foo{
public static void main(String[] args){
}
}
main
はキーワードではありません。明らかにレトロ互換性の理由から、Javaのキーワードにはなりません。
質問については、 main
、良い識別子ですか?
まず、コンパイラに有効であるとは限りません。
たとえばjava1234
提案されてオプションも有効な識別子ですが、これは実際には避けてください。
main
非常に特別で重要な意味があります。これは、java
コマンドラインによって実行されるクラスおよびjarのエントリポイントメソッドとして使用されます。
使い方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)をオーバーロードします。
- 変数に名前を付けるには
_
、$
または、共有の命名規則に反する意外で意味のない文字を使用します(4)。