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

How does it work when I have two methods inside .set() method?

我是 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);
}

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

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

所以它等同于:

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

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

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

永远记得从左到右阅读。因此,在您的情况下,您试图在 'schoolDetailsId' 对象中设置 'id' 字段。

'id' 字段是从 'grade' 对象中的另一个对象获取的,该对象位于 'SchoolHistory (sh)'

SchoolHistory --> 年级 --> schoolId

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