C. *_* O. 0 java generics inheritance
所以我有这个AbstractBook班
public abstract class AbstractBook<T extends AbstractPage> implements Serializable{
public AbstractBook() {
}
public abstract void addPage(T var1);
}
Run Code Online (Sandbox Code Playgroud)
我有一个子类:
public class Book extends AbstractBook {
private ArrayList<Page> allPages;
private String title;
Book(String title){
allPages = new ArrayList<Page>();
}
@Override /** Doesn't Work */
public void addPage(Page page) {
this.allPages.add();
}
}
Run Code Online (Sandbox Code Playgroud)
在子类addPage方法中,我无法以给定的形式覆盖该方法,因为该参数要求是一种AbstractPage类型,即使它Page是从扩展而来的AbstractPage:
public abstract class AbstractPage implements Serializable {
public AbstractPage() {
}
}
Run Code Online (Sandbox Code Playgroud)
和
public class Page extends AbstractPage {
private String content;
public Page(String Content){
this.content = Content;
}
}
Run Code Online (Sandbox Code Playgroud)
T定义为<T extends AbstractPage>,因此Page应该是addPagemethod中参数的可接受类型吗?它坚持编译器坚持AbstractPage类型。<T extends AbstractPage>不适用于T var1
该addPage方法?addPage(Page page)方法的编译呢?您正在扩展原始类型。
更改
public class Book extends AbstractBook
Run Code Online (Sandbox Code Playgroud)
至
public class Book extends AbstractBook<Page>
Run Code Online (Sandbox Code Playgroud)
此外,this.allPages.add();可能应该是this.allPages.add(page);。
| 归档时间: |
|
| 查看次数: |
42 次 |
| 最近记录: |