-4

2つのint値をメソッドで比較しようとしています。

array [i]はpersonオブジェクトのリストであり、gethouseはhouseオブジェクトのみを提供し、houseidは別のクラスにあるため、2つのgetメソッドを続けて配置しました。

2つの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. 私の最初の懸念は、nullポインター例外(NPE)の可能性です。と書くa.getB().getC().getD()と、これらのいずれかがnullを返す可能性があります。結果のスタックトレースでどちらがnullを返したかはわかりません(nullを返す最後の呼び出しを除きます。これは問題ありません)。このシナリオでは、 nullオブジェクトパターンを使用することをお勧めします。
  2. 私の2番目の懸念は、よりデザイン指向です。あなたはAに何を知っているかについての情報を求め、次にその結果を求めています。オブジェクトはあなたのために何かをするために存在するので、あなたはまさにそれをし、あなたのオブジェクトをあなたのために働かせるべきです。Personオブジェクトに重い物を持ち上げてもらいます。
于 2012-10-26T13:32:01.770 に答える
1

houseクラス(gethouse()実装gethouseID()から返されるものはすべて、のpersonインスタンスがarray[i]nullでなく、nullgethouse()以外の何かを返す場合、これは正常に機能します。それ以外の場合、これはコンパイルの失敗で爆破されるか、実行時にnullポインタ例外。人を取得し、nullをチェックし、家を取得し、nullをチェックしてから、houseIDを取得し、探しているものと比較する方が安全です。

于 2012-10-26T13:24:11.500 に答える
0

最初にPersonオブジェクトを取得し、次にgethouse()を呼び出してhouseオブジェクトを取得し、次にgethouseID()を呼び出してIntegerを取得します。これは絶対に可能です。

于 2012-10-26T13:23:59.533 に答える