什么“method1()。method2()。method3()”在java中意味着什么?

时间:2014-01-10 08:09:57

标签: java methods

我了解一些java语言的基础知识。 但我不知道这样的一些陈述:

method1().method2().method3()

两个或三个方法分隔了白点运算符!我无法理解。

这是什么意思?我该如何使用它们?他们是从左到右还是从反向过程? 他们是否返回特殊价值? 我怎么能理解我应该把一些方法分成白点? 我怎样才能创建这样的方法?

7 个答案:

答案 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变量,我们需要将方法的返回值存储在一些不需要的变量中。使用方法链接,我们在这里避免了变量s1s2

答案 2 :(得分:1)

method1返回具有method2的对象,然后你可以调用method2,它返回具有method3的对象并调用它。

答案 3 :(得分:1)

您的陈述将解释如下:

  1. 调用method1()。返回值将是某个对象。
  2. method2()返回的对象调用method1()。此方法也必须具有返回值。
  3. method3()返回的对象调用method2()
  4. 您可以将其重写为:

    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中的回答