将两个构造函数简化为一个
Simplifying two constructors into one
下面是我的响应对象,我用它来构建响应并将其发送回调用者,因为我有一个处于 request/response 模式的系统。
public class DataResponse {
private String response;
private DataErrorEnum error;
private DataStatusEnum status;
public DataResponse(String response, DataErrorEnum error, DataStatusEnum status) {
this.response = response;
this.error = error;
this.status = status;
}
public String getResponse() {
return this.response;
}
public DataErrorEnum getError() {
return this.error;
}
public DataStatusEnum getStatus() {
return this.status;
}
}
有时在我的应用程序代码中,我会像这样创建响应对象:
new DataResponse(null, errorEnum, statusEnum);
如您所见,我明确设置了 null
,这没问题,但有时它会导致混淆哪个字段为空,因此我决定在 DataResponse class 中创建另一个构造函数,如下所示:
public class DataResponse {
private String response;
private DataErrorEnum error;
private DataStatusEnum status;
public DataResponse(String response, DataErrorEnum error, DataStatusEnum status) {
this.response = response;
this.error = error;
this.status = status;
}
// new constructor
public DataResponse(DataErrorEnum error, DataStatusEnum status) {
this.response = null;
this.error = error;
this.status = status;
}
public String getResponse() {
return this.response;
}
public DataErrorEnum getError() {
return this.error;
}
public DataStatusEnum getStatus() {
return this.status;
}
}
这样我现在就可以像这样创建对象:通过这种方式,我不需要发送空响应,因为默认情况下这是在我的其他构造函数中。
new DataResponse(errorEnum, statusEnum);
现在我的问题是 - 有什么方法可以将我的两个构造函数合二为一吗?或者我总是需要两个构造函数?
您不能将两个构造函数合并为一个。
但是您可以声明构造字段的主构造函数,其他构造函数只需调用它,例如。
// new constructor
public DataResponse(DataErrorEnum error, DataStatusEnum status) {
this(null, error, status);
}
public DataResponse(String response, DataErrorEnum error, DataStatusEnum status) {
this.response = response;
this.error = error;
this.status = status;
}
如果响应始终为空,则第二个构造函数适用。两个构造函数都在做类似的功能。为了代码的可读性更好,最好有一个构造函数。
下面是我的响应对象,我用它来构建响应并将其发送回调用者,因为我有一个处于 request/response 模式的系统。
public class DataResponse {
private String response;
private DataErrorEnum error;
private DataStatusEnum status;
public DataResponse(String response, DataErrorEnum error, DataStatusEnum status) {
this.response = response;
this.error = error;
this.status = status;
}
public String getResponse() {
return this.response;
}
public DataErrorEnum getError() {
return this.error;
}
public DataStatusEnum getStatus() {
return this.status;
}
}
有时在我的应用程序代码中,我会像这样创建响应对象:
new DataResponse(null, errorEnum, statusEnum);
如您所见,我明确设置了 null
,这没问题,但有时它会导致混淆哪个字段为空,因此我决定在 DataResponse class 中创建另一个构造函数,如下所示:
public class DataResponse {
private String response;
private DataErrorEnum error;
private DataStatusEnum status;
public DataResponse(String response, DataErrorEnum error, DataStatusEnum status) {
this.response = response;
this.error = error;
this.status = status;
}
// new constructor
public DataResponse(DataErrorEnum error, DataStatusEnum status) {
this.response = null;
this.error = error;
this.status = status;
}
public String getResponse() {
return this.response;
}
public DataErrorEnum getError() {
return this.error;
}
public DataStatusEnum getStatus() {
return this.status;
}
}
这样我现在就可以像这样创建对象:通过这种方式,我不需要发送空响应,因为默认情况下这是在我的其他构造函数中。
new DataResponse(errorEnum, statusEnum);
现在我的问题是 - 有什么方法可以将我的两个构造函数合二为一吗?或者我总是需要两个构造函数?
您不能将两个构造函数合并为一个。
但是您可以声明构造字段的主构造函数,其他构造函数只需调用它,例如。
// new constructor
public DataResponse(DataErrorEnum error, DataStatusEnum status) {
this(null, error, status);
}
public DataResponse(String response, DataErrorEnum error, DataStatusEnum status) {
this.response = response;
this.error = error;
this.status = status;
}
如果响应始终为空,则第二个构造函数适用。两个构造函数都在做类似的功能。为了代码的可读性更好,最好有一个构造函数。