1. ホーム
  2. java

[解決済み] Java の <init> メソッドとは何ですか?オーバーライドできますか?[重複しています]。

2022-03-05 12:45:45

質問

<init> メソッドはスタックトレースなどで確認することができます。 私の理解では、コンストラクタで行われる初期化を表しているのだと思います。

を実行しようとすると

Object.class.getDeclaredMethod("<init>");

を取得します。 java.lang.NoSuchMethodException .

このメソッドは何ですか?いつクラスに追加されたのですか?(コンパイル時~実行時) それは仮想的なものですか? いずれにせよ オーバーライドしますか?

解決方法は?

をご覧ください。 Java仮想マシン仕様 の2.9章をご覧ください。そこには <init> という名前を付けます。

Java 仮想マシンのレベルでは、Java プログラミング言語 (JLS §8.8) で書かれたすべてのコンストラクタは、特別な名前を持つインスタンス初期化メソッドとして表示されます。 <init> . この名前はコンパイラから提供される。この名前は有効な識別子ではないので,Javaプログラミング言語で書かれたプログラムでは直接使用することはできない。

そのため <init> はスタックトレースで見つけることができますが、コードでアクセスすることはできません。