定义一个java类,并将该类的元素数组作为其字段之一,有什么问题吗?

定义一个java类,并将该类的元素数组作为其字段之一,有什么问题吗?,java,Java,我的应用模型由疾病组成,每个疾病都有固有属性(id、名称、发病率等)以及与其他疾病的关系(例如风险因素、诱发疾病、发现)。我考虑了以下两个对象模型: 第一个:嵌套类: class DiagnosticElement{ Disorder disorder; List<Disorder> relatedDisorders; static class Disorder { int id; String name;

我的应用模型由疾病组成,每个疾病都有固有属性(id、名称、发病率等)以及与其他疾病的关系(例如风险因素、诱发疾病、发现)。我考虑了以下两个对象模型:

第一个:嵌套类:

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

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

    }
}
类诊断元素{
紊乱;
列出相关疾病;
静态类障碍{
int-id;
字符串名;
双发病;
疾病(id){
这个.id=id;
}
}
}
第二点:

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

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

    }
类障碍{ int-id; 字符串名; 双发病; 列出相关疾病; 疾病(id){ 这个.id=id; this.relatedDisorders=newArrayList() } }
第二种方法似乎更简单。当然,我必须先实例化无序对象,然后才能在ArrayList中引用它们。一种方法比另一种好吗?

第二种方法没有错,事实上它经常被使用。例如,可以考虑树或链接列表,其中节点拥有指向其他节点的链接。如果在构造函数中创建相同类型的对象,则必须小心,因为这可能导致代码永远运行。

小心,您的行

List<Disorder> relatedDisorders=new ArrayList<Disorder>()
List relatedDisorders=new ArrayList()
在中,构造函数将创建一个局部变量
relatedDisorders
,您可以对其进行初始化。您没有初始化类字段


无论如何,在类中引用自己的类没有什么错。这就是每个链表的工作原理。

谢谢。只是想确保我没有忽略一些已知的未知。谢谢。我对问题进行了编辑,以反映您的更正。