[英]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,因为您仅在其他对象中设置a
和b
。 如果你要使用多个操作的单个对象,你要么需要参考存储在一个变量,或这些业务将不得不返回“本”,让您链方法调用起来:
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.