在 Serializable class 的构造函数中定义对象
To define an object in a constructor in Serializable class
我有一个如下图所示的 JSON 响应,我做了一个可序列化的 class 命名为 Project
在图像中,我的一个对象数组中有两个对象(emergency_contact
和 secondary_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
的新 class,并为参数做一个 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
class 中,您可以添加这些 class 的字段:
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% 的重复问题:)
请注意,从干净代码参数的角度来看,字段应该在 class 中是私有的,并使用 setters / getters 到 set/retrieve 值 from/to那些字段。
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;
}
}
您将以相同的方式定义其他两个 class。现在,您可能对 EmergencyContact 和 SecondaryOwner classes. 的构造函数感到困惑。您可以设置默认构造函数(不带参数)和自定义构造函数(带参数,就像上面的那个)。如果使用默认构造函数,请确保为对象中的字段设置值,如下所示:
EmergencyContact emergencyContact = new EmergencyContact();
emergencyContact.setName("the name");
emergencyContact.setNumber("a number");
那么你可以在Project
class
的构造函数中使用这个对象
我希望已经足够清楚了,如需任何其他说明,请随时提出。
快乐编码 <3
我有一个如下图所示的 JSON 响应,我做了一个可序列化的 class 命名为 Project
在图像中,我的一个对象数组中有两个对象(emergency_contact
和 secondary_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
的新 class,并为参数做一个 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
class 中,您可以添加这些 class 的字段:
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% 的重复问题:)
请注意,从干净代码参数的角度来看,字段应该在 class 中是私有的,并使用 setters / getters 到 set/retrieve 值 from/to那些字段。
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;
}
}
您将以相同的方式定义其他两个 class。现在,您可能对 EmergencyContact 和 SecondaryOwner classes. 的构造函数感到困惑。您可以设置默认构造函数(不带参数)和自定义构造函数(带参数,就像上面的那个)。如果使用默认构造函数,请确保为对象中的字段设置值,如下所示:
EmergencyContact emergencyContact = new EmergencyContact();
emergencyContact.setName("the name");
emergencyContact.setNumber("a number");
那么你可以在Project
class
我希望已经足够清楚了,如需任何其他说明,请随时提出。
快乐编码 <3