En l'état, c'est une série qui résume les outils etc. appris (utilisés) sur le terrain. Je l'écris avec le sentiment que c'est aussi pour moi et que ça devrait être pour quelqu'un. Nous attendons avec impatience vos suggestions et commentaires concernant les erreurs et les méthodes de description!
C'est une bibliothèque qui peut éliminer le code de la plaque chauffante Java [^ 1] en ajoutant des annotations. Juste en l'annotant, il ** implémentera des getters et des setters ** pour tous les champs, et ** implémentera des constructeurs **!
Personnellement, je pense qu'il est très compatible avec ** Spring-Boot ** car cela facilite la création de classes de données et l'injection de constructeurs! Il est également utile lorsque vous souhaitez utiliser un objet immuable [^ 2]. Veuillez l'utiliser!
À propos, la lecture semble être «Ronbok» ou «Ronboku». Je suis une secte «Lomboc».
De là, nous expliquerons chaque annotation.
Getter、Setter
Vous pouvez implémenter des getters et des setters en donnant @ Getetter
et @ Setter
à la classe ou au champ.
Par exemple, supposons que vous implémentiez le "Sample.java" suivant.
Sample.java
@Getter
@Setter
public class Sample {
private String id;
private String name;
private Integer age:
}
Si vous compilez ce qui précède et vérifiez le contenu de Sample.class
, ce sera comme suit.
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;
}
}
… Vous avez bien implémenté des getters et des setters pour tous les domaines. Plus vous avez de champs, moins vous pouvez faire de description!
Dans cet exemple, il est donné à la classe, Si vous ne voulez pas le donner à tous les champs, donnez-le à chaque champ!
Il s'agit d'une annotation qui génère automatiquement un constructeur simplement en l'ajoutant. Il existe trois types.
@ NoArgsConstructor
… Génère automatiquement un constructeur par défaut.@ AllArgsConstructor
… Génère un constructeur qui prend les valeurs d'initialisation pour tous les champs comme arguments.@ RequiredArgsConstructor
… Génère un constructeur qui prend une valeur d'initialisation pour le champ final comme argument.RequiredArgsConstructor
En supposant que le Sample.java
implémenté est le suivant
Sample.java
@RequiredArgsConstructor
public class Sample {
private final String id;
private final String name;
private Integer age;
}
Le "Sample.class" suivant sera créé.
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
Si vous en donnez plusieurs, le constructeur sera généré en conséquence.
En raison des spécifications Java, le constructeur par défaut ne sera pas implémenté si le constructeur est implémenté explicitement.
@ NoArgsConstructor
a aussi beaucoup de tours.
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;
}
}
Cette combinaison fonctionne bien avec MyBatis Entity Class.
ToString
Comme son nom l'indique, @ ToString
implémente (remplace) toString
.
Vous pouvez également utiliser ʻexclude` pour exclure le champ cible.
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
Comme son nom l'indique, @ EqualsAndHashCode
implémente également (remplace) ʻequals et
hashCode`.
La raison pour laquelle ces deux éléments forment un ensemble est qu'ils sont [mécaniquement liés et ne doivent pas se contredire](https://qiita.com/yoshi389111/items/9e34fe297bd908a36065#hashcode-%E3%81%AE% En effet, 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;
}
}
La commodité est inconnue car je ne l'ai pas du tout utilisé sur le terrain.
Value Lorsque «@ Value» est ajouté, les annotations suivantes sont ajoutées et il devient un objet immuable.
@Getter
@ToString
@EqualsAndHashCode
@AllArgsConstructor
Final
est donné à la classe et à chaque champLa valeur est définie par le constructeur au moment de la génération et la valeur ne peut pas être modifiée par la suite.
C'est une annotation que vous souhaitez utiliser lorsque vous souhaitez en faire un objet véritablement immuable.
Vous pouvez générer des méthodes de fabrique statiques en définissant l'option staticConstructor
.
Dans ce cas, le constructeur sera changé en private
, vous ne pourrez donc pas créer une instance sans passer par la méthode factory.
Data Si «@ Data» est ajouté, ce sera le même que lorsque les annotations suivantes sont ajoutées.
@Getter
@Setter
@ToString
@EqualsAndHashCode
@RequiredArgsConstructor
Il s'agit d'une annotation qui résume les fonctions des annotations similaires à «@ Value». Ceci est similaire à l'image de la création d'une classe de bean simple.
J'ai beaucoup écrit, mais je ne peux pas le maîtriser. .. Même s'il a «@ Value», il a «final». (Il n'y a pas de problème car cela fonctionne normalement simplement parce qu'il est redondant)
Cette fois, j'ai présenté les annotations susceptibles d'être utilisées fréquemment.
Certaines annotations n'ont pas encore été introduites
Il existe de nombreuses options comme staticConstructor
, donc si vous êtes intéressé, veuillez le vérifier! !!
Merci d'avoir lu jusqu'au bout!
[^ 1]: Le code de la plaque de la chaudière est un code standard qui ne peut pas être omis en raison des spécifications linguistiques. Code redondant qui doit être écrit même si ce n'est pas l'essence de la logique. [^ 2]: un objet dont la valeur ne change pas après sa création.
Recommended Posts