使用泛型的java继承,子类使用来自super的数据而不是它自己的数据

时间:2018-03-01 19:33:33

标签: java generics inheritance

我正在努力更好地理解Java中的泛型,并遇到一些问题。请帮助找出为什么在下面的代码类“BPage”中使用“APageData”而不是“BPageData”中的数据?

public abstract class PageData {}

public abstract class Page<T extends PageData> {
    public T pageData;
    public Page(T pageData) {
        this.pageData = pageData;
    }
}



public class APageData extends PageData {
    public final String locator = "//*[@id=\"id_1\"]";
}
public class APage<T extends APageData> extends Page<APageData> {
    public APage(T pageData) {
        super(pageData);
    }

    public void getLocator() {
        System.out.println(pageData.locator);
    }
}



public class BPageData extends APageData {
    public final String locator = "//*[@class=\"class_1\"]";
}
public class BPage extends APage<BPageData> {
    public BPage(BPageData pageData) {
        super(pageData);
    }
}


 public class Main {
    public static void main(String[] args) {
        APage aPage = new APage(new APageData());
        aPage.getLocator(); 

        BPage bPage = new BPage(new BPageData());
        bPage.getLocator();
    }
}

结果是

// * [@ ID = “ID_1”]

// * [@ ID = “ID_1”]

0 个答案:

没有答案