【问题标题】:capture of ? extends BasePage do not match to the generic捕获?扩展 BasePage 与泛型不匹配
【发布时间】:2022-07-21 22:13:31
【问题描述】:

我尝试通过以下方式为我的 PageFactory 创建存储:

    private static Map<Class<? extends BasePage>, ? extends BasePage> pageStore = new HashMap<>();
    
    @SneakyThrows
    public <T extends BasePage> T getPage(Class<T> pageClazz) {
        T t = pageClazz.getDeclaredConstructor().newInstance();
        pageStore.put(pageClazz, t);//   <----   here is compilation error
        return null;
    }

所以,虽然?T 都从BasePage 扩展而来,但您可以从代码部分了解我在哪里出现编译错误:

Required type: capture of ? extends BasePage do not math to the generic
Provided: T

我是否必须将类型从 &lt;? extend BasePage&gt; 更改为 BasePage,或者我可以保存当前逻辑并以另一种方式转换我的对象?

【问题讨论】:

    标签: java generics reflection


    【解决方案1】:

    更改方法的参数以扩展BasePaga 类,因为编译器发现它与? extends BasePageT 不匹配

    public <T extends BasePage> T getPage(Class<? extends BasePage> pageClazz) {...}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-20
      • 2015-04-09
      • 1970-01-01
      • 2012-10-19
      相关资源
      最近更新 更多