我了解一些java语言的基础知识。 但我不知道这样的一些陈述:
method1().method2().method3()
两个或三个方法分隔了白点运算符!我无法理解。
这是什么意思?我该如何使用它们?他们是从左到右还是从反向过程? 他们是否返回特殊价值? 我怎么能理解我应该把一些方法分成白点? 我怎样才能创建这样的方法?
答案 0 :(得分:6)
我会给你一个小例子。
method1().method2().method3();
getYear().toString().trim();
首先执行get year(),它返回一个Integer:
1995.toString().trim();
secound执行整数类的toString()方法,返回一个字符串:
"1995".trim();
至少编译器会执行string类的trim()方法。
第一个方法返回一个数字然后你对这个数字使用toString()方法并将其格式化为一个字符串。这将返回一个字符串,然后您可以使用string类的trim()方法修剪()字符串。从前面的方法返回后,执行下一个方法。
答案 1 :(得分:3)
这是方法调用的链接。 method1()
返回的对象将调用method2()
例如,
public static String methodToReturnString() {
return "someString";
}
您使用String subString = methodToReturnString().toLowerCase().substring(3);
调用此方法
这会返回String
estring
。
这类似于以下代码。
String s1 = methodToReturnString();
String s2 = s1.toLowerCase();
String s3 = s2.substring(3);
System.out.println(s3);
至于生成这个s3
变量,我们需要将方法的返回值存储在一些不需要的变量中。使用方法链接,我们在这里避免了变量s1
,s2
。
答案 2 :(得分:1)
method1返回具有method2的对象,然后你可以调用method2,它返回具有method3的对象并调用它。
答案 3 :(得分:1)
您的陈述将解释如下:
method1()
。返回值将是某个对象。method2()
返回的对象调用method1()
。此方法也必须具有返回值。method3()
返回的对象调用method2()
。您可以将其重写为:
SomeType value1 = method1();
SomeOtherType value2 = value1.method2();
value2.method3();
答案 4 :(得分:0)
参见......例如我们可能有
String s= "abcde";
String str = s.trim().subString(2);
1 --> trim() is called on "s".
2 --> subString() is called on the result of s.trim()
答案 5 :(得分:0)
Method1返回object1,它返回object2,返回object2,它有method3。
Object1和object2以及当前对象可以相同,在构建器模式中使用。
类似的东西:
Student {
Semester lastFinishedSemester();
}
Semester {
Courses registeredCourses();
}
Courses {
void printCoursesAndGrades();
}
现在,如果您使用student
方法之一,则可以致电:
lastFinishedSemester().registeredCourses().printCoursesAndGrades();
答案 6 :(得分:0)
obj.method1().method2().method3()
等于
( ( obj.method1() ).method2() ).method3()
重要提示:
method1()
必须返回具有method2()
的对象
method2()
必须返回具有method3()
来源:Yosi Hendarsjah在https://coderanch.com/t/398558/java/method-chaining中的回答