我有一系列相关的课程。还有一些继承的东西似乎让我的 IDE 无法使用。但是我的代码编译得很好。
在我的响应子类中,我试图将错误字段限制为仅包含错误子类。理想情况下,我希望公共 getter 返回List<GWSError>
,这样我就不必继续在使用该方法的其他类中强制转换它。我试图覆盖继承的 getter 和 setter 来执行此操作,但我的 IDE 一直给我一个不兼容的类型错误。NetBeans 和 Eclipse 都在相同的方法上给出错误。
我在下面包含了我的代码示例以澄清这一点。为清楚起见,已省略与此问题无关的代码。
正如我所提到的,当我直接使用 Maven 编译它时,我没有遇到任何编译器错误。
这让我觉得必须有更好的方法来实现这一点。但我不知道那是什么。
基本响应类
public class WSResponse {
protected List<WSError> errors;
public List<WSError> getErrors(){
if(errors == null){
setErrors(new ArrayList<WSError>());
}
return errors;
}
public void setErrors(List<WSError> errors) {
this.errors = errors;
}
}
响应子类
public class GResponse extends WSResponse{
@Override //IDE Error: getErrors() in GResponse cannot override getErrors() in WSResponse; return type List<GWSError> is not compatible with List<WSError>
public List<GWSError> getErrors(){
if(errors == null){
errors = new ArrayList<GWSError>();
}
return errors;
}
@Override //IDE Error: name clash: setErrors(List<GWSError>) in GtmResponse and setErrors(List<WSError>) in WSResponse have the same erasure, yet neither overrides the other
public void setErrors(List<GWSError> errors){
this.errors = errors;
}
public void addError(GWSError error){
getErrors().add(error);
}
}
基本错误类
public class WSError {
}
错误子类
public class GWSError extends WSError{
}