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

这将创建三个新对象。不止一个。

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

一个对象 a = 5,另一个对象 b = 10。

请记住,您不是在使用一个对象。

每当您使用关键字时。JVM 创建一个新对象。

于 2012-04-25T05:59:57.540 回答
3

如果我想从另一个类调用一个类的多个方法,我可以只使用'new classname()'调用它们而不在类引用中捕获它吗?

目前尚不清楚“捕捉它”是什么意思,但您使用的是引用……您只是没有将其分配给变量。

在您的示例中,您正在创建三个不同的对象 - 最后一行的计算只打印 0,因为您只在其他对象中设置了a和。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

如果你想要这样的东西,你可以使用Builder模式:

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

建造者模式是一种可能性。另一种是具有静态属性,因此所有对象都将共享它的值。

static int a,b;
于 2012-04-25T06:11:49.037 回答