【发布时间】:2014-10-15 21:46:16
【问题描述】:
我当前的抽象模型不起作用。我不知道为什么以及如何解决它。请参考以下课程。
public class ErrorCaptchaRequired extends AbstractError {
public String getCaptchaUrl(){
return this.captchaUrl;
}
}
public abstract class AbstractError<E extends AbstractError> {
public E getError(int errorCode){
if(error_code == 1)
return new ErrorCaptchaRequired("abc", "abc", "abc");
if(error_code == 2)
return new AnotherErrorType();
}
}
public class MyObject<E extends AbstractError>{
private E error;
public E getAbstractError(){
return error;
}
}
以后我想这样使用它:
AbstractError<ErrorCaptchRequired> myError = myObject.getAbstractError();
String captchaUrl = myError.getCaptchaUrl();
返回语句期间的编译错误:Incompatible types 但我不知道为什么,因为我已经参数化了类,因此我可以返回从 AbstractError 扩展的任何类型,ErrorCaptchaRequired 正在扩展它。你能建议一个修复或更好的设计吗?谢谢你的帮助!
【问题讨论】:
-
@JeffreyBosboom,更新了!谢谢!
-
请发布完整代码。
AnotherErrorType丢失了,getError()中的最终返回语句也丢失了,任何指示哪一行得到编译器错误的指示也丢失了。
标签: java oop generics inheritance