0

あるクラスの複数のメソッドを別のクラスから呼び出したい場合、クラス参照でキャッチせずに「new classname()」のみを使用して呼び出すことができますか?

public class Example {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        new pqr().a=5;
        new pqr().b=10;
        new pqr().display();
    }
}
class pqr
{
        int a,b;

        public void display()
        {
                System.out.println(a+" "+b);
        }

}
4

4 に答える 4

5

これにより、3 つの新しいオブジェクトが作成されます。1つだけではありません。

new pqr().a=5;
new pqr().b=10;
new pqr().display();

a = 5 のオブジェクトと b = 10 のオブジェクト。

1 つのオブジェクトで作業しているわけではないことに注意してください。

新しいキーワードを使用するたびに。JVM は新しいオブジェクトを作成します。

于 2012-04-25T05:59:57.540 に答える
3

あるクラスの複数のメソッドを別のクラスから呼び出したい場合、クラス参照でキャッチせずに「new classname()」のみを使用して呼び出すことができますか?

「キャッチする」という意味が明確ではありません、参照を使用しています...変数に割り当てていないだけです。

あなたの例では、3 つの異なるオブジェクトを作成しています。最後の行の計算は、他のオブジェクトでのみ設定aしたため、0 を出力するだけです。複数の操作に1 つのオブジェクトbを使用する場合は、参照を変数に格納するか、これらの操作で "this" を返す必要があります。これにより、メソッド呼び出しを連鎖させることができます。

class Sample {
    private int a,b;

    public void display() {

        System.out.println(a+" "+b);
    }    

    public Sample setA(int a) {
        this.a = a;
        return this;
    }

    public Sample setB(int b) {
        this.b = b;
        return this;
    }
}

...

new Sample().setA(5).setB(10).display();

セッターのこの種のチェーンは、ビルダー パターンで一般的です。

于 2012-04-25T06:01:13.757 に答える
0

ビルダー パターンは 1 つの可能性です。もう1つは、すべてのオブジェクトがその値を共有するように静的プロパティを持つことです。

static int a,b;
于 2012-04-25T06:11:49.037 に答える
0

そのようなものが必要な場合は、 Builderパターンを使用できます。

NutritionFacts cocaCola = new NutritionFacts.Builder(240, 8).
    calories(100).sodium(35).carbohydrate(27).build(); 
于 2012-04-25T06:03:48.550 に答える