この記事の概要
■目的
Javaでは、ソース上に記載がなくても、コンパイラが自動で付加するコードがあります。
これを具体的に確認する方法を示します。
■説明
「.javaファイル」をコンパイルすると「.classファイル」が作成されます。
このclassファイルはJVMが理解するためのバイトコードで表現されており、人間には解読困難なため、
JavaのSDKで用意しているJavapコマンドで逆アセンブルすることで確認します。
javapコマンドでclassファイルを逆アセンブル
eclipseで操作していますが、やりたいことは、確認したい.classファイルのパスの確認です。
既に分かっていれば、以下の操作は不要です。
【操作】
1.eclipseを起動
2.対象のファイルを選択し、「システムエクスプローラー」で実ファイルの存在する
パスへ移動
3..javaファイルの格納しているパスにsrcフォルダに移動しているが、一つ上の階層の
.classファイルが存在するbinフォルダに移動する。
javapコマンドでclassファイルの逆アセンブル結果を確認
【操作】
1.コマンドプロンプトを起動
2.classファイルの存在するパスへカレントディレクトリを移動する
【コマンド】
cd パス
dir
3.逆アセンブルコマンドの実行
【コマンド】
javap -c ファイル名
【表示結果の確認】
上記のようにA.classを逆アセンブルすると2つのメソッドで構成されていることが分かる
・public A();
・public void calc();
public Aの部分がA.javaに存在しない、コンパイラが自動付加した部分になります。
コンストラクターの記述がない場合は処理なしのデフォルトコンストラクターを付加すると
いうものです。
以下に参考までに、A.javaの記載内容を示します。