まず最初に、参照しておられるqiitaページの著者さんはjavapとは異なるデコンパイラー(逆アセンブルツール)を利用していると思います。javapはbyte codeのダンプは可能ですが、それに対応するjavaコードを表示する機能はなかったと思います。
ということを踏まえて・・・
自分が逆コンパイルするとコンストラクタのsuperの部分が省略されて表示されてしまいます。
superの部分というより処理コード自体が省略されています。それはjavapのバイトコード表示オプション「-c」を指定していないためです。
javap -p -c EnumTest2.class
とすると次が得られます(一部)
private EnumTest2();
Code:
0: aload_0
1: aload_1
2: iload_2
3: invokespecial #6 // Method java/lang/Enum."<init>":(Ljava/lang/String;I)V
6: return
(前述のとおり)残念ながらjavapではjavaコードは得られませんが、それでもこのバイトコードを解釈すると
0: thisをpush
1: 第一引数をプッシュ
2: 第二引数をプッシュ
3: スーパークラス(java.lang.Enum)のコンストラクターを起動
6: return
なので、次に示すjavaコード相当であることが見て取れます。
リスト1:
java
1private EnumTest2(String name, int ordinal) {
2 super(name, ordinal);
3}
デコンパイル結果をjavaコードとして得たい場合、どこかからデコンパイルツールを見つけてくるとよいでしょう。自分はIntelliJ IDEAのplug-in(Fernflower decompiler)を使ってます。使っているといってもIDEAを介して暗黙的に利用しているに過ぎませんが・・・
このFernflowerはplug-inとしてではなくスタンドアロンとしての利用もできるようですしjava8以降のbyte codeにも対応しているはずなので一応お奨めできると思います。デコンパイラーの中にはメンテが止まっていてjava8のbyte codeに対応していないものも見かけますので注意が必要です。
訂正:
コンストラクターなのにメソッドの型voidを書いていたので訂正しました orz
失礼しました。
補足:
Fernflowerを使うとリスト2が得られ、jadを使うとリスト1が得られるとのこと。
リスト2:
java
1private EnumTest2() {}
よく考えてみるとこの点に気づけてなかったので補足します。
質問者さんの期待は「どのようなbyte codeとなるかを素朴にjavaコードで表現したもの」つまりリスト1であったわけですが、enumの場合、実際にコンストラクターに渡される最初の2つの引数(名前と順序数)はコンパイラーが内部的に生成するものであり、java言語仕様上はこれらの引数は明示的に記述できませんしsuperを呼び出すこともできないという点はご存知かと思います。つまり純粋にjavaとしての正しいソースコードを得るという意味ではjadよりむしろFernflowerの方が正しいということなのだと思います。jadを使うとbyte codeの生成の仕組みをストレートに知ることができるという利点がありますが、これを使うなら「必ずしもjavaの正しいソースコードが得られるわけではない」点に注意しておくべきなのでしょうね。