2011-08-09 7 views
0

Iメインクラス、およびいくつかのサブクラスを持って、私はインスタンス`static/self`戻り値の型を設定するには?

class dad{ 
    public function __construct($arg){ 
    } 

    // it returns caller class'es object 
    public static function get($arg){ 
     return new static($arg); 
    } 
} 

class son exteneds dad{ 
    public function __construct($arg){ 
    } 

    public function sonFunc(){ 

    } 
} 

class daughter extends dad{ 
    public function __construct($arg){ 
    } 

    public function daughterFunc(){ 

    } 
} 

を返す静的メソッドを持って、私は、NetBeans IDEを作りたいson::get()->son方法でautocomplitedする必要があることを、知っているが、daughter::daughter()->daughterによるもの

可能ですか?あるいは、回避策がありますか?
すべてのサブクラスでget()メソッドをオーバーライドしたくありません。

答えて

1

これは私が個人的にコードレイアウトまたは「トリックIDE」ハックにアプローチする方法ではありませんが、コードをオートコンプリート(Eclipse PDT Heliosで...多分NetBeansは同じように動作します) (MIS)は、あなたの2つのクラスのクラスコメントブロックに記述@methodタグを使用することです:

/** 
* @method son get() returns a son 
*/ 
class son extends dad{} 
/** 
* @method daughter get() returns a daughter 
*/ 
class daughter extends dad{} 

私のIDEのテストでは、これはその息子を認識し、オートコンプリートを取得するのに十分だった::(取得)は、「戻ってきます息子 "オブジェクトを返す一方、daughter :: get()は"娘 "オブジェクトを返します。

また、これは@methodタグの意図を誤って使用していますが、あなたが求めている方法で自動補完を有効にします。