[JAVA] Lombok ② Objekterzeugung

Frühere Artikel über Lombok

Lombok ① Einführung

Anmerkungen zur Objekterstellung

Bei Verwendung des Operators Neu

Verwendete Annotation

Name.java


@NoArgsConstructor
@AllArgsConstructor
@Data
public class Name
{
    private String value = "";
}

Age.java


@NoArgsConstructor
@AllArgsConstructor
@Data
public class Age
{
    private Integer value;
}

Person.java


@AllArgsConstructor
@NoArgsConstructor
@Data
public class Person
{
    private Name name = new Name();
    private Age age = new Age();
}

PersonFactory.java


public class PersonFactory
{
    public static Person empty()
    {
        return new Person();
    }

    public static Person of( String name, Integer age)
    {
        return new Person(
                   new Name( name ),
                   new Age( age )
               );//Konstruktorargumente sind in der Reihenfolge der Felddefinition
    }


}

Es kann so generiert werden.

Bei Verwendung statischer Methoden

Verwendete Annotation

Name.java


@NoArgsConstructor(staticName="empty")//Geben Sie den statischen Methodennamen an
@AllArgsConstructor(staticName="of")//Geben Sie den statischen Methodennamen an
@Data
public class Name
{
    private String value = "";
}

Age.java


@NoArgsConstructor(staticName="empty")//Geben Sie den statischen Methodennamen an
@AllArgsConstructor(staticName="of")//Geben Sie den statischen Methodennamen an
@Data
public class Age
{
    private Integer value;
}

Person.java


@NoArgsConstructor(staticName="empty")//Geben Sie den statischen Methodennamen an
@AllArgsConstructor(staticName="of")//Geben Sie den statischen Methodennamen an
@Data
public class Person
{
    private Name name = Name.empty();
    private Age age = Age.empty();
}

PersonFactory.java


public class PersonFactory
{
    public static Person empty()
    {
        return Person.empty();
    }

    public static Person of( String name, Integer age)
    {
        return Person.of(
                  Name.of( name ),
                  Age.of( age )
               );//Methodenargumente sind in Felddefinitionsreihenfolge
    }


}

Es kann so generiert werden.

Bei Verwendung der Builder-Methode

Verwendete Annotation

Wenn die Personenklasse wie folgt wächst,

Person.java


@NoArgsConstructor(staticName="empty")
@AllArgsConstructor(staticName="of")
@Data
public class Person
{
    private Name name = Name.empty();
    private Age age = Age.empty();
    private GenderType genderType = GenderType.UNDEFINED;
    private PhoneNumber phoneNumber = PhoneNumber.empty();
    private MailAddress mailAddress = MailAddress.empty();
    ...
}

Die obige Methode macht die Factory-Klasse etwas komplizierter.

PersonFactory.java


public class PersonFactory
{
    public static Person empty()
    {
        return Person.empty();
    }

    public static Person of( String name, Integer age, GenderType genderType, String phoneNumber, String mailAddress )
    {
        return Person.of(
                  Name.of( name ),
                  Age.of( age ),
                  genderType,
                  PhoneNumber.of( phoneNumber ),
                  MailAddress.of( mailAddress )
               );//Ein Fehler tritt jedes Mal auf, wenn sich die Reihenfolge oder Anzahl der Felder ändert
    }
}

Auf diese Weise hängt das Argument der of-Methode von der Feldreihenfolge und der Nummer der Klasse ab.

Wenn Sie also "@ Builder" hinzufügen, ändert sich dies wie folgt.

Person.java


@Builder//hinzufügen
@AllArgsConstructor(access=AccessLevel.PRIVATE)//Steuerung des Konstruktors mit normalen Argumenten
@NoArgsConstructor(staticName="empty")
@Data
public class Person
{
    private Name name = Name.empty();
    private Age age = Age.empty();
    private GenderType genderType = GenderType.UNDEFINED;
    private PhoneNumber phoneNumber = PhoneNumber.empty();
    private MailAddress mailAddress = MailAddress.empty();
    ...
}

PersonFactory.java


public class PersonFactory
{
    public static Person empty()
    {
        return Person.empty();
    }

    public static Person of( String name, Integer age, GenderType genderType, String phoneNumber, String mailAddress )
    {
        return Person.builder()//Bullder starten
                     .name( Name.of( name ) )//Legen Sie einen Wert für die Feldnamenmethode fest
                     .phoneNumber( PhoneNumber.of( phoneNumber ) )//Es gibt kein Problem, auch wenn die Felder gewechselt werden, da die Reihenfolge zufällig ist.
                     .mailAddress( MailAddress.of( mailAddress ) )
                     .age( Age.of( age ) )
                     ...
                     .build();//Generieren

    }
}

Wie oben erwähnt, wird es möglich sein, flexibel so zu reagieren, wie es ist. Wenn Sie jedoch den Feldnamen ändern, wird die Lombok-Methode nicht geändert, sodass Sie die Quelle manuell ändern müssen **.

Sie müssen auch vorsichtig sein, da für Felder, für die Sie hier keinen Wert festgelegt haben, ** Null eingegeben wird **.

nächstes Mal

Als nächstes werde ich die detaillierte Verwendung jeder Anmerkung zusammenfassen.

Na dann.

Recommended Posts

Lombok ② Objekterzeugung
Lombok ① Einführung
Lombok Memo
Versuchen Sie es mit Lombok
Java ab Anfänger, Klassendeklaration / Objekterzeugung
[Persönliches Memorandum] Objektgenerierung zur Steuerung der Platzierung von Eclipse-Schaltflächen