-4

我正在尝试将两个 int 值与一种方法进行比较。

我将两个 get 方法放在一起,因为 array[i] 是一个人员对象列表,而 gethouse 只给出了 house 对象,而 houseid 在另一个类中。

我想知道是否可以依次设置两个 get() 方法?

public Person findperson( int houseId ){

    for ( int i = 0; i < array.length; i++ ){
        if ( array[ i ].gethouse().gethouseID() == houseId  ){
            return array[ i ];
        }
    }
    return null;
}
4

3 回答 3

1

你可以这样做。

但是,我认为这不是一个好习惯。

  1. 我首先担心的是空指针异常 (NPE) 的可能性。如果你写a.getB().getC().getD(),其中任何一个都可以返回 null。您无法判断结果堆栈跟踪中哪个返回了 null(不包括返回 null 的最后一次调用,这很好)。您可能希望在这种情况下使用空对象模式。
  2. 我的第二个问题是更面向设计。你向 A 询问它所知道的信息,然后询问结果,等等。对象的存在是为了为你做事,所以你应该这样做,让你的对象为你工作。让您的Person对象完成繁重的工作。
于 2012-10-26T13:32:01.770 回答
1

如果你的house类(无论从gethouse()实现 gethouseID() 返回什么,person 实例array[i]不为空,并且gethouse()返回非空值,这将正常工作。否则,这将因编译失败或在运行时出现空指针异常。你更安全地获取人,检查它是否为空,获取房子,检查它是否为空,然后获取 houseID 并与你正在寻找的人进行比较。

于 2012-10-26T13:24:11.500 回答
0

首先你得到一个 Person 对象,然后调用 gethouse() 你得到一个 house 对象,然后你调用 gethouseID() 来获取 Integer。这应该是绝对可能的。

于 2012-10-26T13:23:59.533 回答