繁体   English   中英

没有参考的调用方法

[英]calling methods without having reference

如果我想从另一个类调用一个类的多个方法,我可以仅使用“ 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);
        }

}

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

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

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

请记住,您不是在处理一个对象。

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

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

目前尚不清楚你所说的“抓住它”,但您使用的参考...你只是没有将其分配给一个变量的意思。

在您的示例中,您正在创建三个不同的对象-最后一行的计算仅显示0,因为您仅在其他对象中设置ab 如果你要使用多个操作的单个对象,你要么需要参考存储在一个变量,或这些业务将不得不返回“本”,让您链方法调用起来:

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();

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

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

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

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

static int a,b;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM