继承类中的Java类泛型NullPointerException

时间:2018-02-27 19:28:14

标签: java generics

请帮助理解下一代码中的错误,因为我对Java泛型有相当的了解。 无法找出为什么我在类BPage中获取pageData为null,在APage中它没关系。提前致谢。 我已将excample类简化为多行:

public abstract class PageData {
}

public abstract class Page<T extends PageData> {
    protected 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);
    }
}


APage aPage = new APage(new APageData());
aPage.getLocator();  // locator found, OK

BPage bPage = new BPage(new BPageData());
bPage.getLocator();  //pageData  NullPointerException

1 个答案:

答案 0 :(得分:0)

你需要告诉超级做什么

public class BPage extends APage<BPageData> {
    public BPage(BPageData pageData) {
        super(pageData);
        //this.pageData = pageData;
    }
}