我正在努力更好地理解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”]