Si vous lisez Effective Java 2nd Edition and 3rd Edition \ -Qiita, vous pouvez lire Autovalue sur google. / google / auto) a été introduit, alors je l'ai essayé.
Tutoriel Si vous suivez les instructions, vous pouvez tout essayer, mais comme les paramètres d'environnement d'Intellij étaient requis, c'est le principal. ..
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>tada.suzu</groupId>
<artifactId>autoValueTest</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>autoValueTest</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.auto.value</groupId>
<artifactId>auto-value-annotations</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>com.google.auto.value</groupId>
<artifactId>auto-value</artifactId>
<version>1.6</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
Je m'en fiche car la version de JUnit est exactement la même que la valeur initiale lorsqu'un nouveau projet maven est créé.
Si vous conservez la valeur par défaut, une erreur de compilation se produira, alors définissez-la.
package tada.suzu;
import com.google.auto.value.AutoValue;
@AutoValue
abstract class Animal {
static Animal create(String name, int numberOfLegs) {
//Où AutoValue_Une erreur se produira s'il n'y a pas de classe appelée Animal
return new AutoValue_Animal(name, numberOfLegs);
}
abstract String name();
abstract int numberOfLegs();
}
Cliquez sur Fichier → Paramètres
Sélectionnez Build, Execution, Depeloyment → Compiler → Annotation Processors.
Sélectionnez un projet et modifiez le répertoire des sources de production et le répertoire des sources de test.
Après avoir fermé Settings, compilez à partir du menu Build pour générer AutoValue_Animal.java sous src / main / generated.
Cliquez avec le bouton droit sur le dossier généré et sélectionnez Generated Source Root dans le menu Mark Directory as pour l'ajouter à votre chemin de génération.
Avec ce qui précède, l'erreur de compilation disparaît et il est prêt à fonctionner.
Eh bien, il a été presque écrit dans stackoverflow, donc je prends personnellement juste une note sur la façon de l'utiliser.
Je viens de coller ce qui était écrit dans le document
public void testAnimal() {
Animal dog = Animal.create("dog", 4);
assertEquals("dog", dog.name());
assertEquals(4, dog.numberOfLegs());
// You probably don't need to write assertions like these; just illustrating.
assertTrue(Animal.create("dog", 4).equals(dog));
assertFalse(Animal.create("cat", 4).equals(dog));
assertFalse(Animal.create("dog", 2).equals(dog));
assertEquals("Animal{name=dog, numberOfLegs=4}", dog.toString());
}
Au début, je me demandais si je devais être conscient de la classe qui était automatiquement générée à partir de l'annotation AutoValue_Animal.java, mais lorsque le nombre de variables augmentait, l'annotation était automatiquement égale (), hashcode (), toString (). Il peut être apprécié que le procédé est régénéré. Si vous voulez juste equals (), hashcode (), toString (), ce n'est pas très différent d'utiliser Lombok ou Kotlin. Il semble que les constructeurs avec des arguments et des setters / getters ne soient pas générés, il semble donc bon de les utiliser correctement en fonction de leur objectif.
Soit dit en passant, je me demande s'il y a une possibilité d'envisager de l'utiliser ou non au travail.
Recommended Posts