Допустим, у меня есть этот набор классов 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, чтобы получить значения, но меня беспокоит, как добиться этого динамически.
Field
. Вероятно, член MainIfc. Тем не менее, я чувствую, что это X-Y-вопрос. Какую проблему вы пытаетесь решить? - person Fildor   schedule 26.08.2016