Java两个get()方法相继之后

时间:2012-10-26 13:19:25

标签: java

我试图用方法比较两个int值。

我已经将两个get方法放在一起,因为array [i]是person对象的列表,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;
}

3 个答案:

答案 0 :(得分:1)

如果您的house类(从gethouse()返回的任何内容实现gethouseID(),则array[i]处的人员实例不为空,并且gethouse()返回非空的内容这样可以正常工作。否则,这将导致编译失败,或者在运行时使用空指针异常。你更安全地获取此人,检查它是否为空,得到房子,检查它是否为空,然后获取houseID并与你正在寻找的那个进行比较。

答案 1 :(得分:1)

你可以这样做。

但我不认为这是好习惯。

  1. 我首先关心的是空指针异常(NPE)的可能性。如果您编写a.getB().getC().getD(),则其中任何一个都可以返回null。您无法分辨生成的堆栈跟踪中返回的null(不包括最后一次返回null的调用,这很好)。您可能希望在此方案中使用null object pattern
  2. 我的第二个问题是更多以设计为导向。您要求A获取有关其知识的信息,然后询问结果,依此类推。 对象存在为你做事,所以你应该这样做,让你的对象为你工作。让Person对象完成繁重的任务。

答案 2 :(得分:0)

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