1

先週、私はこれらのような機能を使いすぎていました

function Rectangle setRectangle(Rectangle rect){
    rect = new Rectangle(p,q,r,s);
    return rect;
}

Rectangle rect;
rect = setRectangle(rect);

やりたいだけ

function void setRectangle(Rectangle rect){
    rect = new Rectangle(p,q,r,s);
} 

Rectangle rect;
setRectangle(rect);

私は、関数内の何にでもポインターを設定することができ、実際の変数に設定できるポインターが c++ にあることを知っています。Javaでそれを行う方法を知りたいです。

4

5 に答える 5

0

Java ではポインタの代わりに参照があります。参照しているオブジェクトを変更できます。たとえば、 to を渡すRectanglesetRectangle、メソッドはオブジェクトの変更メンバーを呼び出しrectて、渡されたオブジェクトを変更できます。

static void setRectangle(Rectangle rect){
    rect.Top = p;
    rect.Left = q;
    rect.Width = r;
    rect.Height = s;
}
static void main(String[] args) {
    Rectangle r = new Rectangle(a, b, c, d);
    // At this point r is defined as {a,b,c,d}
    setRectangle(r);
    // At this point r is defined as {p,q,r,s}
}

に渡す場合、これは機能しないことに注意してください。オブジェクトは参照によって渡さnullrectますが、参照は値によって渡されます。

于 2013-08-22T15:33:02.097 に答える
0

メソッドの意図は何ですか?接頭辞は確かに誤解を招く可能性があります。setメソッドが実際に意図するものを反映したものを選択する必要があります。

長方形を作成する場合は、ファクトリ メソッドです。

Rectangle createRectangle() {
  return new Rectangle(p,q,r,s);
}

既存のインスタンスを(再) 構成する場合:

void configure(Rectangle rect) {
  rect.x=p;
  rect.y=q;
  rect.width=r;
  rect.height=s;
}
于 2013-08-22T15:43:06.547 に答える