Предположим, что у меня есть этот класс POJO, который реализует интерфейс, но здесь нет общих атрибутов.Инициализировать POJO динамически с помощью другого метода
public interface MainIfc {}
class Ifc1 implements MainIfc {
private String a1;
public String getA1() {
return a1;
}
public void setA1(String a1) {
this.a1 = a1;
}
}
class Ifc2 implements MainIfc {
private String x1;
private String x2;
public String getX1() {
return x1;
}
public void setX1(String x1) {
this.x1 = x1;
}
public String getX2() {
return x2;
}
public void setX2(String x2) {
this.x2 = x2;
}
}
И вместе с этими классами POJO у меня есть несколько методов, которые я могу использовать, чтобы получить тип POJO возвращается на основе другого значения и фактической POJO со значениями.
public class GetIfc {
public Class getIfcType(int code) {
if (code==1)
return Ifc1.class;
else
return Ifc2.class;
}
public MainIfc getIfc(int code) {
if (code==1) {
Ifc1 thisIfc = new Ifc1();
thisIfc.setA1("Ifc1");
return thisIfc;
} else {
Ifc2 thisIfc = new Ifc2();
thisIfc.setX1("Ifc2");
thisIfc.setX2("Ifc2");
return thisIfc;
}
}
}
Есть ли способ, с помощью которого я могу прочитать конкретную POJO безопасно в моем коде и использовать геттеры/сеттеры? Я рассмотрел довольно много вопросов, которые дают ответы на основе Reflection, но это не работает для меня. Геттеры/сеттеры не видны и когда я звоню. getClass()
на возвращенном объекте Я вижу, что это интерфейс MainIfc
.
Проблема проектирования, которую я пытаюсь решить, относится к инфраструктуре автоматизации REST API, которую я пытаюсь создать. В основном у меня есть парсер ClientResponse
, который отправит обратно POJO, который я ищу. Но я не хочу, чтобы люди, записывающие тестовые примеры, беспокоились о возвращаемом типе POJO. Поэтому я думал, что смогу вернуть тип и созданный POJO, чтобы получить значения, но я обеспокоен тем, как добиться этого динамически.
Непонятно, что вы пытаетесь сделать. Я чувствую стремление к подобному Бин-поведению, но могу ошибаться. – Fildor
", когда я вызываю .getClass() в возвращаемом объекте, я вижу, что это интерфейс MainIfc." Я считаю, что трудно поверить. Добавьте немного кода, который показывает это поведение. Также, пожалуйста, уточните: вы ищете какой-либо способ заставить его работать, или вас интересует правильный способ OO для решения этой проблемы? – Cephalopod
Вы можете добавить в свои классы метод, который возвращает все (общедоступные) поля в виде списка объектов «Поле». Вероятно, член MainIfc. Тем не менее, я чувствую, что это X-Y-Question. В чем проблема, которую вы пытаетесь решить? – Fildor