通用通配符被接受,但类型T不被接受

乌拉布

对于以下情况,假设AModel.class扩展了ABCModel,则情况1

案例1有效

public static Class<? extends ABCModel> getModel(String objectModel) {

                if(objectModel.equalsIgnoreCase("")) {
                    return AModel.class;
                }

    return null;

    }

情况2(引发编译错误)

public  static <T extends ABCModel> Class<T> getModel(String objectModel) {

            if(objectModel.equalsIgnoreCase("")) {
                return AModel.class;
            }

return null;

}

目的是不一样的吗?

财富

在第二种情况下,您将约束类型变量T以扩展ABCModel并承诺返回Class<T>但是,它们T并没有绑定在任何地方,因此在编译期间无法确定是什么T

示例1中的区别在于,返回类型定义为Class<? extends ABCModel>,其上限为ABCModel

T在第二种情况下,在编译时进行绑定的一种方法是将其作为方法的参数,例如:

public static <T extends ABCModel> Class<T> getModel(String objectModel, Class<T> clazz) {

现在T根据传递给方法的参数进行绑定(这就是为什么您看到很多通用方法都包含Class参数的原因)。

当然,这对您的方法无济于事,因为您想检索Class,如果已经传递了它就没有必要。但这仅意味着您应该使用示例1或修复设计。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何扩展接受数组通用元素的类型?

来自分类Dev

C#拒绝接受通用子类类型

来自分类Dev

如何扩展接受数组通用元素的类型?

来自分类Dev

接受Collection <T>和<T>两种类型的通用类型接口

来自分类Dev

Java通用通配符构造函数不接受对象?

来自分类Dev

带有浮点的图形,数据类型不被接受

来自分类Dev

通用构造函数接受类型T的类对象,并返回T,这次T是一个List

来自分类Dev

具有List <T>的Java通用接口不接受对象类型

来自分类Dev

DTMF不被PHP Agi接受

来自分类Dev

SPOJ Addrev答案不被接受

来自分类Dev

jQuery的日期验证不被接受

来自分类Dev

MapBox缩放级别不被接受

来自分类Dev

SPOJ Addrev答案不被接受

来自分类Dev

Systemd Restart =总是不被接受

来自分类Dev

ImageResizer源参数不被接受

来自分类Dev

JS 代码不被 freecodecamp 接受

来自分类Dev

为什么这个通用方法不接受任何类型?

来自分类Dev

限制通用子类方法可以在C#中接受的类型

来自分类Dev

限制通用子类方法可以在C#中接受的类型

来自分类Dev

Java通用类仅接受特定的类类型?

来自分类Dev

如何接受非相当通用但动态类型作为子类的参数?

来自分类Dev

派生的打字稿类类型不被接受,因为它是自己的基本类型

来自分类Dev

文件命令不接受通配符

来自分类Dev

引导〜“ aria-expanded”不被元素<a>接受

来自分类Dev

SQL Desc列名称不被接受?

来自分类Dev

gnuplot-datafile中的单列不被接受

来自分类Dev

证书不被接受。无法设置私钥文件

来自分类Dev

邮件错误:SMTP错误:数据不被接受

来自分类Dev

instagram REDIRECT URI ios方案不被接受

Related 相关文章

热门标签

归档