2013-03-20 125 views
0

我對Java相當陌生,我從C++背景來到它。我正在使用一個必須在被保護的構造函數被調用之前被擴展的類。我只需要在一個實例中的類。有沒有一種方法可以動態創建類並同時實例化它?如何動態創建一個類並在Java中實例化它?

我發現了類似的帖子,但沒有達到標記。我有下面的代碼作爲例子,但當然它的語法不正確。

final ffd.tokens.CountryTokens cToken = new class USA extends ffd.tokens.CountryTokens 
{ 
    USA (String value) 
    { 
     super(value); 
    } 
} ("USA"); 
+2

這可能有所幫助:http://stackoverflow.com/questions/8913406/java-inline-class-definition – Jon 2013-03-20 21:00:57

回答

1

是這樣的嗎?

final ffd.tokens.CountryTokens cToken = new ffd.tokens.CountryTokens("someValue") 
{ 
// override something 
}; 

更正:

即使受保護的方法,你可以創建一個生成器,將延長ffd.tokens.CountryTokens

public abstract class CountryBuilder extends ffd.tokens.CountryTokens { 
    public CountryBuilder() { super("useless-data"); }  
    public abstract ffd.tokens.CountryTokens build (String val); 
} 

使用(很瘋狂吧?):

CountryBuilder builder = new CountryBuilder(){ 
    @Override 
    public ffd.tokens.CountryTokens build(String val) { 
     return new ffd.tokens.CountryTokens(val) {}; 
    } 
}; 

builder.build("USA"); 
builder.build("Canada"); 

我想你明白了。

+0

問題是CountryTokens counstructor受到保護。 – jiveturkey 2013-03-20 21:12:20

+0

這很酷,我一直忘記這種模式。但我只是希望有一個單線解決方案。感謝所有偉大的投入。 – jiveturkey 2013-03-21 14:06:39

0

我想我明白了。我總是在考慮用Java進行動態分配,但如果我簡單地創建一個本地實例,我就是這樣做的。

class USA extends ffd.tokens.CountryTokens 
{ 

    public USA() { super("USA"); } 

} USA country; 

現在我有USA類型的我的局部變量country

相關問題