Java泛型扩展
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java泛型扩展,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1184字,纯文字阅读大概需要2分钟。
内容图文
让我说我有:
公共类动物{..}
和公共类Cat扩展动物{…}
public MakeNoise(Class<? extends Animal> animal1,
Class<? extends Animal> animal2){..}
为什么MakeNoise(new Animal(),new Animal())不能编译?
而MakeNoise(新的Cat(),新的Cat())确实编译.
有没有办法解决它而不添加动物接口,并做:
Class<? extends AnimalInterface>
解决方法:
why does
MakeNoise(new Animal(),new Animal())
doesn’t compile?
因为新的Animal()创建了Animal的实例而不是Class的实例.确实是Class<?延伸动物>在处理Animal实例时,它是一个Class的实例,它是Animal类的子类型.
你试图实现的是这样的:
public MakeNoise(Animal animal1, Animal animal2){..}
或者假设MakeNoise是一个类,您可以在下一个类定义中定义泛型:
public class MakeNoise<X extends Animal, Y extends Animal> {
public MakeNoise(X animal1, Y animal2){..}
}
然后你就可以打电话了
MakeNoise makeNoise1 = new MakeNoise(new Cat(), new Cat());
MakeNoise makeNoise2 = new MakeNoise(new Animal(), new Animal());
如果MakeNoise应该是一个方法(如果是这样,你的问题中有一个拼写错误,因为没有返回的类型),你也可以在方法定义中定义泛型类型,如下例所示:
<X extends Animal, Y extends Animal> void MakeNoise(X animal1, Y animal2) {...}
while
MakeNoise(new Cat(),new Cat())
does compile.
由于前面描述的相同原因,这无法编译
内容总结
以上是互联网集市为您收集整理的Java泛型扩展全部内容,希望文章能够帮你解决Java泛型扩展所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。