Wir haben ein POJO, das automatisch mit ~ 60 Eigenschaften generiert wird. Dies wird mit avro 1.4 generiert, das keine Getter / Setter enthält.
Eine Bibliothek, mit der wir einfache Transformationen zwischen Objekten bereitstellen, erfordert Getter / Setter-ähnliche Methoden, um ordnungsgemäß zu funktionieren.
Gibt es eine Möglichkeit, Getter / Setter zu replizieren, ohne das POJO manuell überschreiben und alle Getter / Setter manuell erstellen zu müssen?
public class BigGeneratedPojo {
public String firstField;
public int secondField;
...
public ComplexObject nthField;
}
public class OtherObject {
private String reprOfFirstFieldFromOtherObject;
private ComplexObject reprOfFirstFieldFromOtherObject;
public String getReprOfFirstFieldFromOtherObject() { ... standard impl ... };
public void setReprOfFirstFieldFromOtherObject() { ... standard impl ... };
}
Der Wunsch ist es, Code zu schreiben, der aussieht wie:
Mapper<BigGeneratedPojo, OtherObject> mapper =
MagicalMapperLibrary.mapperBuilder(BigGeneratedPojo.class, OtherObject.class)
.from(BigGeneratedPojo::getFirstField).to(OtherObject::reprOfFirstFieldFromOtherObject)
.build();
BigGeneratedPojo pojo = new BigGeneratedPojo();
pojo.firstField = "test";
OtherObject mappedOtherObj = mapper.map(pojo);
assertEquals(mappedOtherObj.getReprOfFirstFieldFromOtherObject(), "test");
quelle
Angesichts Ihrer Einschränkungen würde ich einen weiteren Schritt zur Codegenerierung hinzufügen. Wie Sie es genau implementieren, hängt von Ihrem Build-System ab (Maven / Gradle / etwas anderes). Mit JavaParser oder Roaster können Sie jedoch
BigGeneratedPojo.java
eine Unterklasse mit den gewünschten Gettern / Setzern analysieren und erstellen. Das Build-System sollte sie beiBigGeneratedPojo
Änderungen automatisch aktualisieren .quelle
IDEs wie Eclipse und STS bieten die Möglichkeit, Getter / Setter-Methoden hinzuzufügen. Mit dieser Option können wir Setter / Getter-Methoden erstellen
quelle
BigGeneratedPojo
es sich um eine generierte Datei handelt. Um sie tatsächlich zu manipulieren, müsste ich sie in eine Unterklasse unterteilen und eine Wrapper-Klasse mit ~ 120 Dummy-Methoden (60 Getter / Setter) haben. Dies ist ein Albtraum, den es zu pflegen gilt.Ich würde vorschlagen, Reflection zu verwenden, um die öffentlichen Felder aus Ihrer Klasse abzurufen und die Getter und Setter mit Ihrem eigenen Java-Programm wie folgt zu erstellen. Betrachten Sie die folgende Klasse als Beispiel.
Der Code stammt von hier - leicht modifiziert, um unnötige zu vermeiden
System.out
. Sie können ganz einfach eine Datei aus Ihrermain
Funktion erstellen und Ihre Getter und Setter dort ablegen.Sie können das Programm überprüfen, indem Sie es auch hier ausführen. Ich hoffe das hilft.
quelle
Sie können Lombok verwenden. Es ist einfach zu bedienen und zu implementieren. Es werden Getter und Setter in der .class-Datei nach der Kompilierung erstellt. Außerdem sieht der Code sauberer aus.
}}
quelle