My Photo

« グレンラガン(TV)最終話を見た | Main | FF11 白銀剣勲章ゲット »

December 09, 2008

staticな内部クラス

他人の書いたコードにスタティックなインナークラスがあって意味がよくわからないので調べたら、自分が大きな誤解をしていることがわかった。


staticな内部クラスは内部クラスじゃあない
内部クラス
ネストしたクラス[ネストクラス]とは


そもそも、「staticな内部クラス(inner class)」という言葉自体間違っていた。
「staticなメンバクラス」が正しい。
「staticな入れ子クラス(nested class)」でもいいような気がするけど、どうなんだろう。
で、「staticなメンバクラス」のメンバ変数はスタティックじゃないそうだ。
前述の他人のソースで「staticなメンバクラス」をnewしていたので、自分は
「この(staticなメンバ)クラスのメンバ変数はstaticな領域にあるのに、newしてどうするんだ?」
と思っていたが、staticなメンバクラスのインスタンスは普通のクラスと同じでメンバ変数はインスタンスごと確保される。
アホだorz

メモ:
・インナクラス(staticが付いていない入れ子クラス)は暗黙的にエンクロージングクラス(外側のクラス)のインスタンスの参照を持つ。
→最初からエンクロージングクラスのインスタンス変数、インスタンスメソッドを使える。
・staticなメンバクラスはエンクロージングクラスのインスタンスの参照を持たない。
→エンクロージングクラスのインスタンス変数、インスタンスメソッドを使えない。(明示的に参照を渡せば別だろうけど)

« グレンラガン(TV)最終話を見た | Main | FF11 白銀剣勲章ゲット »

「Java」カテゴリの記事

Comments

Post a comment

(Not displayed with comment.)

TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/26461/43366689

Listed below are links to weblogs that reference staticな内部クラス:

« グレンラガン(TV)最終話を見た | Main | FF11 白銀剣勲章ゲット »

March 2017
Sun Mon Tue Wed Thu Fri Sat
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
無料ブログはココログ

日本blog村

  • にほんブログ村 IT技術ブログへ
  • にほんブログ村 アニメブログへ
  • にほんブログ村 サッカーブログ アルビレックス新潟へ

好きな音楽家

メモ

XI-Prof