So wie es ist, handelt es sich um eine Reihe, die die auf dem Gebiet erlernten (verwendeten) Werkzeuge usw. zusammenfasst. Ich schreibe es mit dem Gefühl, dass es auch für mich selbst ist und dass es für jemanden sein sollte. Wir freuen uns auf Ihre Vorschläge und Kommentare zu Fehlern und Beschreibungsmethoden!
Es ist eine Bibliothek, die Java-Kesselplattencode [^ 1] durch Hinzufügen von Anmerkungen entfernen kann. Nur durch Annotation werden Getter und Setter für alle Felder implementiert und Konstruktoren implementiert!
Ich persönlich denke, dass ** Spring-Boot sehr kompatibel ist **, weil es einfacher ist, Datenklassen zu erstellen und Konstruktoren zu injizieren! Dies ist auch nützlich, wenn Sie ein unveränderliches Objekt [^ 2] verwenden möchten. Bitte benutzen Sie es!
Übrigens scheint die Lesung "Ronbok" oder "Ronboku" zu sein. Ich bin eine Lomboc-Sekte.
Von hier aus werden wir jede Anmerkung erklären.
Getter、Setter
Sie können Getter und Setter implementieren, indem Sie der Klasse oder dem Feld "@ Getetter" und "@ Setter" geben.
Angenommen, Sie implementieren die folgende Sample.java
.
Sample.java
@Getter
@Setter
public class Sample {
private String id;
private String name;
private Integer age:
}
Wenn Sie das oben Gesagte kompilieren und den Inhalt von Sample.class
überprüfen, ist dies wie folgt.
Sample.class
public class Sample {
private String id;
private String name;
private Integer age:
public String getId() {
return this.id;
}
public String getName() {
return this.name;
}
public Integer getAge() {
return this.name;
}
public void setId(String id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setAge(Integer age) {
this.age = age;
}
}
… Sie haben Getter und Setter für alle Bereiche gut implementiert. Je mehr Felder Sie haben, desto weniger Beschreibung können Sie machen!
In diesem Beispiel wird es der Klasse gegeben, Wenn Sie es nicht allen Feldern geben möchten, geben Sie es jedem Feld!
Dies ist eine Anmerkung, die automatisch einen Konstruktor generiert, indem sie ihn einfach hinzufügt. Es gibt drei Arten.
@ NoArgsConstructor
… Generiert automatisch einen Standardkonstruktor.@ AllArgsConstructor
… Erzeugt einen Konstruktor, der Initialisierungswerte für alle Felder als Argumente verwendet.@ RequiredArgsConstructor
… Erzeugt einen Konstruktor, der einen Initialisierungswert für das letzte Feld als Argument verwendet.RequiredArgsConstructor
Angenommen, die implementierte Sample.java
lautet wie folgt
Sample.java
@RequiredArgsConstructor
public class Sample {
private final String id;
private final String name;
private Integer age;
}
Die folgende Sample.class
wird erstellt.
Sample.class
public class Sample {
private final String id;
private final String name;
private Integer age;
public Sample(String id, String name) {
this.id = id;
this.name = name;
}
}
NoArgsConstructor + AllArgsConstructor
Wenn Sie mehr als eine angeben, wird der Konstruktor entsprechend generiert.
Aufgrund der Java-Spezifikationen wird der Standardkonstruktor nicht implementiert, wenn der Konstruktor explizit implementiert ist.
@ NoArgsConstructor
hat auch viele Wendungen.
Sample.java
@NoArgsConstructor
@AllArgsConstructor
public class Sample {
private String id;
private String name;
private Integer age;
}
Sample.class
public class Sample {
private String id;
private String name;
private Integer age;
public Sample() {
};
public Sample (String id, String name, Integer age) {
this.id = id;
this.name = name;
this.age = age;
}
}
Diese Kombination funktioniert gut mit MyBatis Entity Class.
ToString Wie der Name schon sagt, implementiert "@ ToString" "toString" (überschreibt). Sie können auch "ausschließen" verwenden, um das Zielfeld auszuschließen.
Sample.java
@ToString(exclude = "age")
public class Sample {
private String id;
private String name;
private Integer age;
}
Sample.class
public class Sample {
private String id;
private String name;
private Integer age;
@Override
public String toString() {
return "Sample(id=" + this.id + ", name=" + this.name + ")");
}
}
EqualsAndHashCode Wie der Name schon sagt, implementiert (@ EqualsAndHashCode) auch "equals" und "hashCode" (überschreibt). Der Grund, warum diese beiden eine Menge sind, ist, dass sie [mechanisch verwandt sind und nicht widersprechen dürfen](https://qiita.com/yoshi389111/items/9e34fe297bd908a36065#hashcode-%E3%81%AE% Dies liegt daran, dass E5% 9F% BA% E6% 9C% AC).
Sample.java
@EqualsAndHashCode
public class Sample {
private String name;
private int age;
}
Sample.class
public class Sample {
private String name;
private int age;
public boolean equals(Object o) {
if (o == this) return true;
if (!(o instanceof Person)) return false;
final Person other = (Person) o;
if (!other.canEqual((Object) this)) return false;
final Object this$name = this.name;
final Object other$name = other.name;
if (this$name == null ? other$name != null : !this$name.equals(other$name)) return false;
if (this.age != other.age) return false;
return true;
}
public int hashCode() {
final int PRIME = 59;
int result = 1;
final Object $name = this.name;
result = result * PRIME + ($name == null ? 0 : $name.hashCode());
result = result * PRIME + this.age;
return result;
}
protected boolean canEqual(Object other) {
return other instanceof Person;
}
}
Die Bequemlichkeit ist unbekannt, weil ich sie im Feld überhaupt nicht benutzt habe.
Value Wenn "@ Value" hinzugefügt wird, werden die folgenden Anmerkungen hinzugefügt und es wird ein unveränderliches Objekt.
@Getter
@ToString
@EqualsAndHashCode
@AllArgsConstructor
Final
wird der Klasse und jedem Feld gegebenDer Wert wird vom Konstruktor zum Zeitpunkt der Generierung festgelegt und kann danach nicht mehr geändert werden.
Es ist eine Anmerkung, die Sie verwenden möchten, wenn Sie daraus ein wirklich unveränderliches Objekt machen möchten.
Sie können statische Factory-Methoden generieren, indem Sie die Option staticConstructor
festlegen.
In diesem Fall wird der Konstruktor in "privat" geändert, sodass Sie keine Instanz erstellen können, ohne die Factory-Methode zu durchlaufen.
Data Wenn "@ Data" hinzugefügt wird, entspricht dies dem Hinzufügen der folgenden Anmerkungen.
@Getter
@Setter
@ToString
@EqualsAndHashCode
@RequiredArgsConstructor
Dies ist eine Annotation, die die Funktionen von Annotationen zusammenfasst, die @ Value
ähneln.
Dies ähnelt dem Bild des Erstellens einer einfachen Bean-Klasse.
Ich habe viel geschrieben, aber ich kann es nicht beherrschen. .. Obwohl es "@ Value" hat, hat es "final". (Es gibt kein Problem, da es normal funktioniert, nur weil es redundant ist.)
Dieses Mal habe ich die Anmerkungen vorgestellt, die wahrscheinlich häufig verwendet werden. Einige Anmerkungen wurden noch nicht eingeführt Es gibt viele Optionen wie "staticConstructor". Wenn Sie also interessiert sind, probieren Sie es bitte aus! !!
Vielen Dank für das Lesen bis zum Ende!
[^ 1]: Der Kesselplattencode ist ein Standardcode, der aufgrund von Sprachspezifikationen nicht weggelassen werden kann. Redundanter Code, der geschrieben werden muss, obwohl er nicht die Essenz der Logik ist. [^ 2]: Ein Objekt, dessen Wert sich nach seiner Erstellung nicht ändert.
Recommended Posts