我正在尝试向Groovy类添加构造函数,但是添加第二个方法作为构造函数我收到编译错误..
由于构造函数中的哈希冲突,无法编译类
class BaseException extends RuntimeException {
private Integer status
private String message
private Long timestap
private List<ErrorMessage> errors
BaseException(Integer status, String message, List<ErrorMessage> errorMessageList) {
this.status = status
this.message = message
this.timestap = System.currentTimeMillis();
this.errors = errorMessageList
}
// ---
// adding the method below gives a compile error
// ---
BaseException(Integer status, String message, List<ErrorCode> errorCodeList) {
this.status = status
this.message = message
this.timestap = System.currentTimeMillis();
this.errors = []
errorCodeList.each { error ->
this.errors.add(new ErrorMessage(error.code, error.description))
}
}
.. code emitted
}
任何提示我做错了什么?
答案 0 :(得分:1)
由于擦除,一旦删除泛型,就不能有两个具有相同签名的构造函数或方法。
Java也是如此。
如果你真的需要这个,那么通常会有两个具有不同名称的静态工厂方法和一个处理这两种情况的可访问性较低的构造函数