调用方法而没有引用

时间:2012-04-25 05:57:49

标签: java

如果我想从另一个类调用一个类的多个方法,我可以通过仅使用' 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 个答案:

答案 0 :(得分:5)

这会创建三个新对象。不只是一个。

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

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

请记住,您没有使用一个对象。

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

答案 1 :(得分:3)

  

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

目前尚不清楚“抓住它”是什么意思,但 使用引用...你只是不将它分配给变量。

在您的示例中,您创建了三个不同的对象 - 最后一行的计算只打印0,因为您只在其他对象中设置了ab。如果要将单个对象用于多个操作,则 需要将引用存储在变量中,否则这些操作必须返回“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();

这种对setter的链接在构建器模式中很常见。

答案 2 :(得分:0)

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

NutritionFacts cocaCola = new NutritionFacts.Builder(240, 8).
    calories(100).sodium(35).carbohydrate(27).build(); 

答案 3 :(得分:0)

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

static int a,b;