文字リテラルの謎が解けた。

友人とまさゆき地図でレベル上げしたりS*1A*2のLV99地図での宝箱漁りしたりした帰りに焼肉食いながらJVMとか.Netについて語り合っていたのですがその話の中で以前なやんでいたStringのカノニカライゼーションの謎が解けました。

私はinternメソッドについて根本的に勘違いをしていたようです。
internの参照先のプールに追加されるのはinternのメソッドが呼ばれた時点なんですね。私は「すべての文字列リテラルと文字列値の定数式に対して,基準表現が作成される」というのを読み誤ってStringObjectが出来る際にもこれが呼び出されていてStringObjectとしては別物だけど内部のテーブルには追加されているんだと勘違いしていました。
なのであんな謎だらけになっていたのですが、一気に解消です。思い込みは怖いですね。そして人に話すと解決するもんだと改めて感じた

やはり冗談言ったりしながらも言語仕様とか超深い話を出来る友達がいるのはいいことだなと。

JavaŒ¾Œê‹K’è Žš‹å•¶–@