java – 泛型 – 我错过了什么或有什么意义?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 泛型 – 我错过了什么或有什么意义?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含952字,纯文字阅读大概需要2分钟。
内容图文
我有以下代码:
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的特定类型.
内容总结
以上是互联网集市为您收集整理的java – 泛型 – 我错过了什么或有什么意义?全部内容,希望文章能够帮你解决java – 泛型 – 我错过了什么或有什么意义?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。