2011-01-24 38 views
0
public LeNo generate (PrintStream stream) { 

    prepareOperands(stream); 
    LeNo l = (LeNo)left; 
    LeNo r = (LeNo)right; 

    if (l instanceof NumNo && r instanceof NumNo) { 
     return new NumNo((Integer.getInteger(l.name()).intValue()*Integer.getInteger(r.name()))); 
    } 
    if ((l instanceof NumNo && l.name().equals("0"))||(r instanceof NumNo && r.name().equals("0"))) { 
     return new NumNo(0); // cut of rest of code here.... 

有沒有一種方法可以創建新的NumNo方法,而無需在返回時創建它?如何在此創建此方法的實例?

事情是我仍然想返回NumNo,但沒有創建一個新的NumNo。

+0

什麼語言? – 2011-01-24 00:34:08

+0

是的,謝謝你添加標籤。 – 2011-01-24 00:40:03

回答

1

這只是return new NumNo(0);,你不想創建對不對?因爲每次都是一樣的?如果是這樣,您可以創建該對象的靜態實例。例如, private static final NewNo ZERO = new NewNo(0);

這被稱爲flyweight模式,您可以在其中創建一次常用實例。

+0

我認爲不需要創建「new NumNo」,但在第一種情況下,如果有合適的setter,那麼可以設置值並返回「l」或「r」。 – 2011-01-24 00:38:46

0
return NumNo.getClass(); 

返回一個類而不是一個實例。

創建java.lang.Class.newInstance()

例如一個實例:

klass = generate(stream); 
object = klass.newInstance();