私はjavap
を持つクラスを逆コンパイルしていると私はこのように、定数プールのセクションで、いくつかの重複を見ている:Javaクラスの定数プールは重複していますか?
#19 = Class #350 // java/lang/StringBuilder
... Some other class constants here
#318 = Class #350 // java/lang/StringBuilder
Methodrefsは、唯一のそれらのを参照してください。
#20 = Methodref #19.#351 // java/lang/StringBuilder."<init>":()V
#22 = Methodref #19.#353 // java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
#24 = Methodref #19.#355 // java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
#25 = Methodref #19.#356 // java/lang/StringBuilder.toString:()Ljava/lang/String;
#110 = Methodref #19.#445 // java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
は、このクラスでありますThe class File Formatに従って正しいですか?私はすべてのクラスが一度だけ言及され、後でそのバイトコード部分のインデックスで参照されると考えました。
$ javac -version
javac 1.7.0_15
他の奇妙なことは、javacのPool.javaで定数プールを表すクラスのソースです。これは、オブジェクトがすでに存在する場合(HashMapの助けを借りて)オブジェクトをプールに入れないことを示します。私はこれらのクラスのequals()/ hashCode()メソッドが正しく実装されているのだろうかと思います。
で観察し、その内部クラスをロードすることは技術的に法的拒否されますされている間、あなたはその時に見ていましたように見えますバグをリンクしましたか?それは2008年に報告され、最後の活動は2年前です。それは実際に壊れていた、それはずっと前に修正されていただろう。 – cHao
私はそれが何歳だったかを言及していませんでした。私はそのバグとその謝辞に言及していました。私はこれが本当にバグだと言っていた。 –
これは非効率です....しかし間違っているわけではありません。 – cHao