Скажем, у меня есть следующий POJO:Знаете ли вы какие-либо библиотеки, которые берут объект, и возвращают строку, представляющую, как этот объект может быть построен с использованием его класса-строителя?
public class Student {
private String firstName;
private String lastName;
public Student(){};
public Student(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
и его строитель:
public class StudentBuilder {
private Student student;
public StudentBuilder() {
this.student = new Student();
}
public StudentBuilder withFirstName(String firstName) {
this.student.setFirstName(firstName);
return this;
}
public StudentBuilder withLastName(String lastName) {
this.student.setLastName(lastName);
return this;
}
public Student build() {
return this.student;
}
}
Учитывая, что у меня есть экземпляр класса Student, есть библиотека, которая может взять объект студент, как параметр и возвращает строку, представляющую предложение, чтобы создать экземпляр этого конкретного объекта с помощью его построителя?
Использование должно быть что-то вроде:
public static void main(String[] args) {
Student student = new Student("John", "Smith");
String builderInstantiator = StringObjectInstantiator.generate(student);
Assert.assertEquals("new StudentBuilder().withFirstName(\"John\").withLastName(\"Smith\").build();", builderInstantiator);
}
Я имею в виду, чтобы спросить вокруг немного перед началом ее реализации с нуля.
Краткая история: Один из модулей приложения, над которым я работаю, предоставит мне json-файл, содержащий сериализованные pojos. Основываясь на этом json, я должен сгенерировать несколько классов java, которые создают экземпляры этих объектов, используя их создателей.
ввода пробы: проба
[
{
"firstName": "John",
"lastName": "Smith"
},
{
"firstName": "David",
"lastName": "Winter"
},
{
"firstName": "Rebecca",
"lastName": "Cross"
}
]
Выход:
public class StudentProvider {
public List<Student> get() {
return Arrays.asList(
new StudentBuilder().withFirstName("John").withLastName("Smith").build(),
new StudentBuilder().withFirstName("David").withLastName("Winter").build(),
new StudentBuilder().withFirstName("Rebecca").withLastName("Cross").build()
);
}
}
Возможно, вы нашли что-то в коде, который реализует шаблоны IDE. –
https://github.com/mkarneim/pojobuilder –
Теперь вы очень заинтересовались тем, почему вы спрашиваете об этом :) – Thirler