Kami memiliki POJO yang dihasilkan secara otomatis dengan ~ 60 properti. Ini dihasilkan dengan avro 1.4, yang tidak termasuk getter / setter.
Pustaka yang kami gunakan untuk menyediakan transformasi sederhana antara objek membutuhkan metode pengambil / penyetel seperti untuk bekerja dengan benar.
Apakah ada cara untuk mereplikasi getter / setter tanpa harus mengesampingkan POJO secara manual dan membuat semua getter / setter secara manual?
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 ... };
}
keinginannya adalah menulis kode yang terlihat seperti:
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");
sumber
Mengingat kendala Anda, saya akan menambahkan langkah pembuatan kode lain. Cara mengimplementasikannya tergantung pada sistem build Anda (Maven / Gradle / sesuatu yang lain), tetapi JavaParser atau Roaster akan memungkinkan Anda untuk mem
BigGeneratedPojo.java
- parsing dan membuat subkelas dengan getter / setter yang diinginkan, dan sistem build harus secara otomatis memperbaruinya jika adaBigGeneratedPojo
perubahan.sumber
IDE seperti Eclipse dan STS menyediakan opsi untuk menambahkan metode getter / setter. kita bisa menggunakan opsi itu untuk membuat metode setter / getter
sumber
BigGeneratedPojo
adalah file yang dihasilkan, jadi untuk benar-benar memanipulasinya, saya perlu mensubclassnya dan memiliki kelas wrapper dengan metode dummy ~ 120 (60 getter / setter) dan merupakan mimpi buruk untuk dipertahankan.Saya akan menyarankan menggunakan refleksi untuk mendapatkan bidang publik dari kelas Anda dan membuat getter dan setter menggunakan program Java Anda sendiri sebagai berikut. Pertimbangkan kelas berikut sebagai contoh.
Kode diambil dari sini - sedikit dimodifikasi untuk menghindari yang tidak perlu
System.out
. Anda dapat dengan mudah membuat file darimain
fungsi Anda dan meletakkan getter dan setter Anda di sana.Anda dapat memeriksa program dengan menjalankannya di sini juga. Saya harap itu membantu.
sumber
Anda bisa menggunakan Lombok. Apakah mudah digunakan dan diimplementasikan. Ini akan membuat getter dan setter dalam kompilasi postingan file .class. Itu juga membuat kode terlihat bersih.
}
sumber