我使用以下语法从ErrorCodeEnum类中获取错误代码。如何使用ErrorCodeEnum类中的重载构造函数直接执行此操作?
new ServiceException(ErrorCodeEnum.ERROR_1005.getErrorCode() )
创建一个重载的构造函数,直接获取错误代码。
我的课程如下 公共类MainException扩展RuntimeException {
private String errorMessage;
private ErrorCodeEnum errorCodeEnum;
public MainException() {
}
public MainException (ErrorCodeEnum errorCodeEnum, String errorMessage) {
//super(errorMessage);
this.errorCodeEnum = errorCodeEnum;
this.errorMessage = errorMessage;
}
public String getErrorCode() {
return errorCode;
}
public String getErrorMessage() {
return errorMessage;
}
}
和基类为: 公共类ServiceException扩展MainException {
public ServiceException() {
}
public ServiceException(ErrorCodeEnum errorCodeEnum,String errorMessage) {
super(errorCodeEnum,errorMessage);
}
}
无法超载。
答案 0 :(得分:1)
ErrorCodeEnum的构造函数无法返回ServiceException。你可以做的是定义一个ServiceException的构造函数,它接受枚举本身的一个实例:
public ServiceException(ErrorCodeEnum e) {
this(e.getErrorCode());
}
因此可以使用
throw new ServiceException(ErrorCodeEnum.ERROR_1005);
或枚举中返回ServiceException的方法:
public enum ErrorCodeEnum {
// ...
public newServiceException() {
return new ServiceException(this.getErrorCode());
}
}
因此可以使用
throw ErrorCodeEnum.ERROR_1005.newServiceException();
你当然可以同时做这两件事。
答案 1 :(得分:0)
我猜你想要ServiceException直接接受ErrorCodeEnum的一个实例吗?
我猜你现在有什么:
public class ServiceException {
public ServiceException(int errorCode) {
// do stuff
}
}
要简单地重载构造函数,可以这样做:
public class ServiceException {
public ServiceException(int errorCode) {
// do stuff
}
public ServiceException(ErrorCodeEnum errorCodeEnum) {
// do other stuff
}
}
然后,您可以直接致电new ServiceException(ErrorCodeEnum.ERROR_1005)
。至于新构造函数的实现,最简单的方法可能是利用现有的构造函数并将错误代码传递给它,您可以通过引用this
来调用它:
public class ServiceException {
public ServiceException(int errorCode) {
// do stuff
}
public ServiceException(ErrorCodeEnum errorCodeEnum) {
this(errorCodeEnum.getErrorCode());
}
}