遊星ゲームズ
FrontPage | RSS


getInstanceは継承できない?
 日記

 最近JAVAやっててもどうしても納得いかないんだけど。シングルトンとかで使う静的メソッドgetInstance()を継承することはできないんである。
 getInstanceを親クラスで定義しても、それはどうあっても親クラスのメンバであって、子クラスではない。やるならクラス名を引数に渡すという、なんかどこかかっこ悪い実装をするしかない。
 PHPの話でいうなら、 return new self(); と書いたときに親クラスのインスタンスが返されてしまう。シングルトンなら必ず同じ内容のメソッドがあるのに、それは各クラスに書くしかない。
 でもしかたないのかなあ。たしかに、静的メソッドの継承を許してしまうと、っていうかそれは静的なのか?という気もするし。

 シングルトンが嫌いな人もいるという話をどこかで読んだけど、まあようするにできないということは推奨されないという解釈もできるし、そういうことなんでしょうか。
 個人的には、JAVAはともかく、PHPのようないいかげんな言語は静的メソッドの継承でもなんでもてきとうにやってしまうがいいと思う。


getInstanceは継承できない?を