Java中的方法链和示例
方法链接是在一行中调用不同方法而不是分别调用具有相同对象引用的其他方法的做法。在此过程中,我们必须编写一次对象引用,然后通过用(点)分隔它们来调用方法。
Java中的方法链接是在 OOP 中调用多个方法调用的常用语法。链接中的每个方法都返回一个对象。它违反了对中间变量的需求。换句话说,方法链可以定义为好像我们有一个对象,并且我们在该对象上一个接一个地调用方法称为方法链。
句法:
obj.method1().method2().method3();
在上面的语句中,我们有一个对象 (obj) 并调用 method1() 然后是 method2(),然后是 method3()。因此,一个接一个地调用或调用方法称为方法链接。
Note: Method chaining in Java is also known as parameter idiom or named parameter idiom. Sometimes it is also known as a train wreck because of the increase in the number of methods even though line breaks are often added between methods.
让我们先审核例子,然后解释起来会顺畅很多。
示例 1:
Java
class A {
private int a;
private float b;
A() { System.out.println("Calling The Constructor"); }
int setint(int a)
{
this.a = a;
return this.a;
}
float setfloat(float b)
{
this.b = b;
return this.b;
}
void display()
{
System.out.println("Display=" + a + " " + b);
}
}
// Driver code
public class Example {
public static void main(String[] args)
{
// This will return an error as
// display() method needs an object but
// setint(10) is returning an int value
// instead of an object reference
new A().setint(10).display();
}
}
Java
class A {
private int a;
private float b;
A() { System.out.println("Calling The Constructor"); }
public A setint(int a)
{
this.a = a;
return this;
}
public A setfloat(float b)
{
this.b = b;
return this;
}
void display()
{
System.out.println("Display=" + a + " " + b);
}
}
// Driver code
public class Example {
public static void main(String[] args)
{
// This is the "method chaining".
new A().setint(10).setfloat(20).display();
}
}
Java代码中的编译错误:
prog.java:34: error: int cannot be dereferenced
new A().setint(10).display();
^
1 error
解释:
- 当我们调用构造函数时,我们应该意识到构造函数没有任何返回类型,而是返回当前对象的引用。打开这里以获取有关构造函数的更多信息。
- 由于构造函数返回了对象引用,我们也可以使用返回的对象引用来调用另一个方法。
- 因此,通过实现 dot(.)运算符,我们也可以调用另一个名为“setint(10)”的方法。到目前为止,我们正在尝试进一步调用 display 方法,但是这是不可能的。为什么?查看下一点。
- 现在,“setint(10)”方法返回变量的整数值。通俗的说,可以很容易理解,不能基于变量调用 next 方法。为了解决这个问题,“setint(10)”方法必须返回对象引用。怎么可能做到?
示例 2:
Java
class A {
private int a;
private float b;
A() { System.out.println("Calling The Constructor"); }
public A setint(int a)
{
this.a = a;
return this;
}
public A setfloat(float b)
{
this.b = b;
return this;
}
void display()
{
System.out.println("Display=" + a + " " + b);
}
}
// Driver code
public class Example {
public static void main(String[] args)
{
// This is the "method chaining".
new A().setint(10).setfloat(20).display();
}
}
输出
Calling The Constructor
Display=10 20.0
- 在上面的例子中,我们派生了 setint(int a) & setfloat(float b) 方法作为类类型。
- 在这种情况下,在返回时,我们使用的是“this”,它正在返回当前实例引用。检查 this 以了解“this”引用变量的用途和值。
- 当在主方法中实现方法链接时,“setint(10)”和“setfloat(20)”将返回对象的引用,该引用进一步用于调用“display()”方法。