「javap -verbose」を使用してクラス ファイルを解析し、定数プールが失われていることを確認しました #3。誰か理由を教えてください。
前のエントリにはタイプがLong
あり、そのドキュメントには次のように記載されていることに注意してください。
すべての 8 バイト定数
constant_pool
は、ファイルのテーブルで2 つのエントリを占有しclass
ます。CONSTANT_Long_info
orCONSTANT_Double_info
構造体がインデックスnconstant_pool
のテーブル内のアイテムである場合、プール内の次の使用可能なアイテムはインデックスn +2 に配置されます。インデックスn +1 は有効である必要がありますが、使用できないと見なされます。constant_pool
そしてきちんとした追加
振り返ってみると、8 バイトの定数に 2 つの定数プール エントリを持たせることは、適切な選択ではありませんでした。
そこでjavap
、「<code>#3 unusable」…</p> のようなものを出力する代わりに、単に unusable エントリをスキップすることにしました。