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的特定类型. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |