重载的构造函数用法

时间:2012-01-17 07:49:09

标签: java

我使用以下语法从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);

}

}

无法超载。

2 个答案:

答案 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());
    }

}