クラス解析機
javaclassにCode属性とStackMapTable属性の解析機能を実装してコミットしましたよ。 →GitHub - unageanu/javaclass以下はjavaclassを使ってクラスの解析結果を表示する例です。Code属性の解析をサポートしたので(昔と違って)javapに近い結果が得られるように…
javaclassのサンプルその2。指定したJavaBeanのassertEqualsをさくっと作るスクリプトです。 equals()が実装されていなくて、assertEquals(Object, Object)で単純に比較できないJavaBeanの場合、フィールドを1つづつ取り出して評価する必要があって面倒です…
jar内のクラスの型階層を表示するスクリプトです。たとえばaopalliance.jarを対象に実行すると、↓のようなツリーを表示します。 --- interface org.aopalliance.aop.Advice └interface org.aopalliance.intercept.Interceptor ├interface org.aopalliance.in…
しばらく更新してなかったJavaクラス解析機ですが、密かにテストケースなんかを書いていたのです!まだまだTODOは多いですが、現在のバージョンをgithubにアップロードしてみました。→http://github.com/unageanu/javaclass/tree/masterもうちょっと形になっ…
メソッドのコード属性の読み込みに対応。コード属性の属性として付与される、ローカル変数属性、行番号属性、例外テーブル属性もまとめて実装しました。 ここまでの解析コード →Javaクラス解析機 080421 動作サンプル 解析対象クラス(のソース)。 public cla…
パラメータアノテーション属性、アノテーションの初期値属性の読み込み部分をごそごそと作る。 ここまでの解析コード →Javaクラス解析機 080418 動作サンプル 初期値を持つアノテーション。 package com.example.annotation; import java.lang.annotation.Re…
クラス、メソッド、フィールドのアノテーション解析部分を実装。パラメータのアノテーションは未。 ここまでの解析コード →Javaクラス解析機 080417 動作サンプル Runtimeアノテーション。パラメータつき。 package com.example.annotation; import java.lan…
EnclosingMethod属性とDeprecated属性に対応。シグネチャ属性も対応したけど、解析部分が未。 現在の読み込み対応データ ★付きが今日対応したモノ。 クラスデータ 名称 サイズ 説明 magic 4byte クラスファイルを識別するためのマジックナンバー。0xCAFEBABE…
例外とインナークラス属性に対応。 現在の読み込み対応データ ★付きが今日対応したモノ。 クラスデータ 名称 サイズ 説明 magic 4byte クラスファイルを識別するためのマジックナンバー。0xCAFEBABEが入る。 minor_version 2byte クラスのマイナーバージョン…
属性の読み込みに着手。クラス属性を読み込む部分を書いて、次の2つの属性の読み込みに対応。 定数値(ConstantValue) ソースファイル(SourceFile) あと、いろいろリファクタしました。 長くなってきたのでファイルを分割して、クラス構成も大幅変更。 Class…
アノテーションがでてこないなー?とか思っていたら、参照しているドキュメントが古かったようだ。。。orz。The Class File FormatにJava5での変更が反映された版があるので(via IT アーキテクト - J2SE 5.0の新機能 第20回 バイトコードの操作)、それを元に…
メソッドの解析に対応。相変わらず属性は未サポートですが・・・。 現在の読み込み対応データ ★付きが今日対応したモノ。 クラスデータ 名称 サイズ(byte) 説明 magic 4byte クラスファイルを識別するためのマジックナンバー。0xCAFEBABEが入る。 minor_vers…
引き続き、まったり実装。 フィールド情報の読み込みまで対応 ただし、フィールドの属性(attribute)は未対応。 クラス構成をいろいろ変更。constantとかは別クラスとした。 現在の読み込み対応データ ★付きが今日対応したモノ。 クラスデータ 名称 サイズ 説…
ACC_ABSTRACTとか調べているうちに、Javaクラスの解析機を作りたくなってしまいました。 検索したらいっぱい見つかりそう。 つーか、javapでいいじゃん! とか思いつつ、でもそんなのかんけーねぇ!ということで、すみやかに着手。The JavaTM Virtual Machine …