2011-08-09 63 views
0

我有主類,還有一些子類,我有靜態方法返回實例如何設置`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)使用的文檔塊類的@method標記爲你的兩個子類:

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

在我的IDE的測試,這是足以讓自動完成承認兒子::得到()將返回「兒子「對象,而女兒:: get()會返回一個」女兒「對象。

同樣,這是濫用@method標記的意圖,但它確實以您要求的方式啓用了自動填充功能。