当我在.set()方法中有两个方法时它是如何工作的?
我是 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);
}
因此,如果您有一行包含多个点运算符,您可以像往常一样从左到右阅读。然后,如果像这里一样用作某些方法的参数,则从内到外。