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

时间:2018-11-20 07:45:28

标签: java android json serializable

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

JSON Response

在图像中,我在一个对象的数组中有两个对象(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的新类,并对参数进行吸气和吸气。但是这样做之后,我仍然感到困惑,如何在构造函数中定义它?

我知道我已经接近了,但是我需要一些帮助。高度赞赏。在此先感谢!

2 个答案:

答案 0 :(得分:1)

好的。您需要一个:

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%上是重复的:)

答案 1 :(得分:1)

请注意,从正确的代码参数角度来看,这些字段应该正确,并且应该在类中是私有的,并使用setters / getters从/向这些字段设置/获取值。

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