繁体   English   中英

在 Serializable 类的构造函数中定义对象

[英]To define an object in a constructor in Serializable class

我有一个如下图所示的 JSON 响应,并且我创建了一个名为Project的可序列化类

JSON 响应

在图像中,我的一个对象数组中有两个对象( emergency_contactsecondary_owner )。 我试图弄清楚是否要做什么才能定义对象,因为我希望这些细节出现在我的构造函数中。

到目前为止,我已经这样做了:

public class Project implements Serializable {
   public int id;
   public String name;
   public String additional_information;
   //Now what to do Emergency contact

   public Project(int id, String name, String additional_information){

   }
}

我想过这样做, public EmergencyContact emergency = new EmergencyContact(param1, param2)

并创建一个名为EmergencyContact的新类,并为参数执行 getter 和 setter。 但是这样做之后,我仍然感到困惑,我将如何定义它的构造函数?

我知道我很接近,但我需要一些帮助。

当然。 你需要有一个:

public class EmergencyContact implements Serializable {

   public String name;
   public String number;

   public EmergencyContact(String name, String number){
     // assign fields 
   }
}

和业主之一:

public class EmergencyOwner implements Serializable {

   public String name;
   public String number;

   public EmergencyOwner(String name, String number){
     // assign the fields
   }
}

然后在您的Project类中,您可以添加这些类的字段:

public class Project implements Serializable {
   public int id;
   public String name;
   public String additional_information;
   public EmergencyContact emergency_contact;
   public EmergencyOwner emergency_owner;

   public Project(int id, String name, String additional_information, EmergencyContact emergency_contact, EmergencyOwner emergency_owner){
     // assign the fields here as well
   }
}

就是这样。 如果这是问题的答案,请考虑删除此问题,因为它是 100% 重复的:)

请注意,从干净的代码参数的角度来看,这些字段在类中应该是私有的,并使用 setter/getter 从/向这些字段设置/检索值。

public class Project implements Serializable {
   private int id;
   private String name;
   private String additional_information;
   private EmergencyContact emergency_contact;
   private SecondaryOwner secondary_owner;

   public Project(int id, String name, String additional_information, EmergencyContact emergencyContact, SecondaryOwner secondaryOwner){
       this.id = id;
       this.name = name;
       this.additional_information = additional_information;
       this.emergency_contact = emergencyContact;
       this.secondary_owner = secondaryOwner;
   }
}

您将以相同的方式定义其他两个类。 现在,您可能对 EmergencyContact 和 SecondaryOwner 类的构造函数感到困惑。您可以设置默认构造函数(不带参数)和自定义构造函数(带参数,就像上面的那样)。 如果使用默认构造函数,请确保为对象中的字段设置值,如下所示:

EmergencyContact emergencyContact = new EmergencyContact();
emergencyContact.setName("the name");
emergencyContact.setNumber("a number");

那么你可以在Project类的构造函数中使用这个对象

我希望它足够清楚,如有任何其他说明,请随时提出。

快乐编码 <3

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM