Я в настоящее время два класса. Ответ с помощью простого атрибута «responseCode». Ответ имеет статический экземпляр (простой ответ, когда он является KO).Как вернуть статический экземпляр в подкласс типа
У меня также есть класс DetailResponse, который является подклассом моего класса Response.
Что бы я хотел сделать, так это вернуть объект типа DetailResponse, используя мою статическую переменную KO_RESPONSE в классе Response. Есть ли способ сделать это просто?
Мой супер класс Ответ:
public class Response {
public static final Response KO_RESPONSE = new A(ReturnCode.KO);
public ReturnCode responseCode;
public String comment;
public Response() {};
public Response (ReturnCode responseCode) {
this.responseCode = responseCode;
}
public static enum ReturnCode {
OK,
KO;
}
}
Мой подкласс DetailResponse, который расширяет Ответ:
public class DetailResponse extends Response {
public String otherField;
}
класс BuisinessService:
public BuisinessService {
public DetailResponse sendRequest() {
String status = sendRequest() // Do something
if(status.equals("KO")) {
return Response.KO_RESPONSE; // What I would do but doesn't work because Response is the super class of DetailResponse
} else {
DetailResponse detail = new DetailResponse(ReturnCode.OK);
detail.comment = "comment";
detail.otherField = "somethingCool";
return detail;
}
}
}
Почему дону Вы просто возвращаете новый экземпляр «DetailResponse» с соответствующим кодом возврата и без дополнительных данных? Вы не можете использовать статическое поле и изменять его тип во время выполнения, если вы хотите использовать статические поля (или статические заводские методы), вам нужно будет предоставить один для каждого типа и выбрать соответственно. – Thomas
Вам нужно, чтобы 'Response.KO_RESPONSE' когда-либо был (не детализированным)' Response'? Или это всегда будет типа 'DetailResponse'? – bradimus
@ Томас, я думаю, ты прав. Я искал что-то легко читаемое. Я думаю, что возможно сделать что-то с родовым типом и статическим заводом, но он все равно будет более сложным, чем простой конструктор. –