-1
即時通訊嘗試學習如何使用模式構建器。我可以讓它工作,直到我試圖使用枚舉。在java中使用枚舉與模式生成器
我試圖改變代碼幾次,每次都有不同的錯誤。現在錯誤是不兼容的類型。
請你幫忙把這段代碼帶到工作狀態,如果你有改進代碼的建議,那將會很棒。
謝謝。
編輯: 現在它似乎是好的,但我如何使用它與主內的生成器? 這是我用
主要代碼:
Person person3 = new Person.PersonBuilder("Julliete", "Kaplan")
.status(); // what should i write here to set the status?
人類
public class Person
{
private final String name;
private final String lastname;
private final int age;
//My enum im trying to use
private Status status;
public enum Status
{
SINGLE ("Single"), MARRIED ("Married"), WIDOWER ("Widower");
private String status;
private Status(String status)
{
this.status = status;
}
public String getStatus()
{
return this.status;
}
}
//builder
private Person(PersonBuilder builder) {
this.name = builder.name;
this.lastname = builder.lastname;
this.age = builder.age;
this.status = builder.status;
}
//GETTERS
public String getName() {
return name;
}
public String getLastname() {
return lastname;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return "Person : "+this.name+", "+this.lastname+", "+this.age;
}
//PersonBuilder
public static class PersonBuilder
{
private final String name;
private final String lastname;
private int age;
private Status status;
public PersonBuilder(String name, String lastname) {
this.name = name;
this.lastname = lastname;
}
public PersonBuilder age(int age) {
this.age = age;
return this;
}
public PersonBuilder status(Status status)
{
this.status = status;
return this;
}
public Person build() {
Person person = new Person(this);
return person;
}
}
是什麼原因爲什麼你的枚舉是私人的?如果將它保留爲公共,Person和PersonBuilder可以共享它 – user902383
雖然PersonName中的枚舉具有相同的名稱和內容,但它與PersonBuilder中的枚舉不同,它的枚舉類型是一個**不同的枚舉。 – Jesper
在風格上,我會簡單地調用'PersonBuilder'類'Builder':你可能知道它構建了一個'Person',它在這個類中。 –