2011-01-24 33 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

? –

+0

ええ、タグを追加していただきありがとうございます。 –

答えて

1

右に作成したくないのはちょうどreturn new NumNo(0);です。毎回同じなので?その場合は、そのオブジェクトの静的インスタンスを作成できます。たとえば、 プライベートstatic final NewNo ZERO = new NewNo(0);

これはフライウェイトパターンと呼ばれ、よく使用されるインスタンスを一度作成します。

+0

私は "new NumNo"の両方を作成したくないと思っていますが、最初のインスタンスに適切なセッターがあれば値を設定し、 "l"または "r"を返すことができます。 –

+0

私は戻り値Num(0)を作成したいが、そこに新しい値を入れない。私がそれをすると、NumNoメソッドが見つからないというエラーメッセージが表示されます。だから私はそれを返す前にそれを初期化しなければならないと思う。 –

0
return NumNo.getClass(); 

インスタンスではなくクラスを返す。

例えばjava.lang.Class.newInstance()

でインスタンスを作成します。

何語
klass = generate(stream); 
object = klass.newInstance(); 
+0

提案してくれてありがとうJay。 –

+0

注newInstance()は、引数なしのパブリックコンストラクタがあることを前提としています。 –

関連する問題