Java 当我在.set()方法中有两个方法时,它是如何工作的?

Java 当我在.set()方法中有两个方法时,它是如何工作的?,java,dot-operator,Java,Dot Operator,我是java新手,我需要帮助理解代码试图做什么。我对最后一行(sd.setId(sh.getGrade().getSchoolId());)感兴趣。我知道它是在sd对象中使用setId进行设置的,但是接下来我有点困惑这行的其余部分(sh.getGrade().getSchoolId())正在尝试做什么。getSchoolId()方法是否先调用,然后调用sh.getGrade()并在sd中设置所有内容?当一行代码中有多个点(.)运算符时,如何读取代码 while (oneIter.hasNext(

我是java新手,我需要帮助理解代码试图做什么。我对最后一行(sd.setId(sh.getGrade().getSchoolId());)感兴趣。我知道它是在sd对象中使用setId进行设置的,但是接下来我有点困惑这行的其余部分(sh.getGrade().getSchoolId())正在尝试做什么。getSchoolId()方法是否先调用,然后调用sh.getGrade()并在sd中设置所有内容?当一行代码中有多个点(.)运算符时,如何读取代码

while (oneIter.hasNext()) {
 ShoolHistory sh= (ShoolHistory) oneIter.next();
 ScoolDetailId sd = new ScoolDetailId();
 sd.setId(sh.getGrade().getSchoolId());

对于这种情况,最简单的方法是将打开的每个命令拆分为几行。那么您的结果将是:

while (oneIter.hasNext()) {
    ShoolHistory sh = (ShoolHistory) oneIter.next();
    ScoolDetailId sd = new ScoolDetailId();
    Grade grade = sh.getGrade(); // I'm just assuming some types here and for the id
    Integer id = grade.getSchoolId(); // I like btw the usage of all possible variations of writing "school"
    sd.setId(id);
}

所以,如果你有一行有多个点运算符,你就开始像平常一样从左到右阅读。然后,如果它在这里用作某些方法的参数,则从内部到外部。

对于类似的内容,最简单的方法是将打开的每个命令拆分为几行。那么您的结果将是:

while (oneIter.hasNext()) {
    ShoolHistory sh = (ShoolHistory) oneIter.next();
    ScoolDetailId sd = new ScoolDetailId();
    Grade grade = sh.getGrade(); // I'm just assuming some types here and for the id
    Integer id = grade.getSchoolId(); // I like btw the usage of all possible variations of writing "school"
    sd.setId(id);
}

所以,如果你有一行有多个点运算符,你就开始像平常一样从左到右阅读。然后,如果它像这里一样用作某些方法的参数,则从内部到外部。

我假设
sh.getGrade()
返回一个类型为
Grade
的对象,该对象在该代码的范围之外定义。然后对该对象调用名为
getSchoolId()
的方法,该方法返回ID,然后将ID传递给
sd.setId
方法

因此,它相当于:

Grade grade = sh.getGrade();
String id = grade.getSchoolId();
sd.setId(id);

通过将方法链接在一起,您只是跳过了额外的变量,

我假设
sh.getGrade()
返回一个
Grade
类型的对象,该对象在该代码范围之外定义。然后对该对象调用名为
getSchoolId()
的方法,该方法返回ID,然后将ID传递给
sd.setId
方法

因此,它相当于:

Grade grade = sh.getGrade();
String id = grade.getSchoolId();
sd.setId(id);

通过将方法链接在一起,您只是跳过了额外的变量,

,因为您可能已经知道Java是面向对象的编程。因此,大多数情况下,您将处理对象

永远记住从左到右阅读。因此,在您的例子中,您试图在“schoolDetailsId”对象中设置“id”字段

“id”字段是从“SchoolHistory(sh)”中的“grade”对象中的另一个对象获取的

学校历史-->年级-->学校ID


您可以参考本文来了解更多信息。

因为您可能已经知道Java是面向对象编程。因此,大多数情况下,您将处理对象

永远记住从左到右阅读。因此,在您的例子中,您试图在“schoolDetailsId”对象中设置“id”字段

“id”字段是从“SchoolHistory(sh)”中的“grade”对象中的另一个对象获取的

学校历史-->年级-->学校ID


您可以参考此内容以了解更多信息。

从左到右。它从学校历史中获取成绩,然后从成绩中获取学校ID,然后将其设置为详细ID。从左到右。它从学校历史记录中获取分数,然后从分数中获取学校ID,然后将其设置为详细ID。太棒了,我看到了。因此,只有几行代码链接在一起。谢谢你,克里斯蒂安。每次看到方法链接在一起,我总是感到困惑。太棒了,我看到了。因此,只有几行代码链接在一起。谢谢你,克里斯蒂安。每次看到方法链接在一起,我总是感到困惑。