3

私のアプリケーション モデルは、固有の属性 (id、名前、発生率など) と他の障害との関係 (危険因子、誘発性障害、所見など) を持つ障害で構成されています。次の 2 つのオブジェクト モデルを検討しました。

最初: ネストされたクラス:

class DiagnosticElement{
      Disorder disorder;
      List<Disorder> relatedDisorders;

      static class Disorder {
          int id;
          String name;
          double incidence;
          Disorder(id){
              this.id=id;
          }

    }
}

二番目:

class Disorder {
        int id;
        String name;
        double incidence;
        List<Disorder> relatedDisorders;

        Disorder(id){
            this.id=id;
            this.relatedDisorders=new ArrayList<Disorder>()
        }

    }

2 番目のアプローチはより単純に見えます。もちろん、ArrayList で Disorder オブジェクトを参照するには、まず Disorder オブジェクトをインスタンス化する必要があります。あるアプローチは他のアプローチよりも優れていますか?

4

2 に答える 2

7

2 番目のアプローチに問題はありません。実際、これはかなり頻繁に使用されます。たとえば、ノードが他のノードへのリンクを保持する Trees または LinkedLists を考えてみてください。コンストラクター内で同じ型のオブジェクトを作成する場合は注意が必要ですが、コードが永久に実行される可能性があります。

于 2013-05-24T00:40:47.437 に答える
0

気をつけて、あなたのライン

List<Disorder> relatedDisorders=new ArrayList<Disorder>()

コンストラクターで、初期化するローカル変数を作成しrelatedDisordersます。クラス フィールドを初期化していません。

とにかく、クラス内に独自のクラスへの参照を持っていても問題はありません。それがすべてのリンクされたリストの仕組みです。

于 2013-05-24T00:41:53.877 に答える