加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 泛型 – 我错过了什么或有什么意义?

发布时间:2020-12-15 04:58:11 所属栏目:Java 来源:网络整理
导读:我有以下代码: public class AClassX extends AnInterface implements AnotherInterface { public AClass(X x){ }} 为什么我会使用X作为构造函数参数类型,当我可以用AnInterface替换它时?当然,他们的意思是相同的,任何东西都是AnInterface的子类型? 我试
我有以下代码:

public class AClass<X extends AnInterface> implements AnotherInterface {

    public AClass(X x){
    }

}

为什么我会使用X作为构造函数参数类型,当我可以用AnInterface替换它时?当然,他们的意思是相同的,任何东西都是AnInterface的子类型?

我试图将所有参数类型保持为通用,并且仅在通用参数声明中提及接口名称,例如“X扩展AnInterface”但遇到问题,因为它说我传入的值(类型为AnInterface)不等于输入X.

编辑:

public void<X extends AnInterface> myMethod(){


    AnInterface b = new ADiffClass();
    AnotherInterface a = new AClass(b);
}

public class ADiffClass<X extends AnInterface> implements AnInterface {

    public ADiffClass(){
    }

}

这是我遇到问题的地方,我得到一个编译错误,说b的类型是AnInterface,并且AClass的构造函数中所需的类型是X.

解决方法

如果你声明一个这样的变量:

private AClass<Foo> a;

以下内容有效:

a = new AClass<Foo>(new Foo());

但以下不是:

a = new AClass<Foo>(new Bar());

(假设Foo和Bar是AnInterface的两个实现).

在这种情况下,这就是泛型:将类型限制为实现(或扩展)AnInterface的特定类型.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读