java – 扩展泛型类的类的错误覆盖方法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 扩展泛型类的类的错误覆盖方法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1490字,纯文字阅读大概需要3分钟。
内容图文
我有一个A类扩展了B类,B类扩展了一个泛型类
我的A级是:
public class MyCustomerReviewConverter<SOURCE extends CustomerReviewModel, TARGET extends ReviewData> extends CustomerReviewConverter{
@Override
public void populate(final SOURCE source, final TARGET target) {.....}
扩展的B类是
public class CustomerReviewConverter extends AbstractPopulatingConverter<CustomerReviewModel, ReviewData>{
@Override
public void populate(final CustomerReviewModel source, final ReviewData target)
{..........}
但我得到了错误
Name clash: The method populate(SOURCE, TARGET) of type MyCustomerReviewConverter<SOURCE,TARGET> has the same erasure as populate(CustomerReviewModel, ReviewData) of type
CustomerReviewConverter but does not override it
怎么了?
作为populate方法中的第二个参数,我必须传递一个类
MyReviewData extends ReviewData{...}
提前致谢
安德里亚
解决方法:
棘手且难以解释.
>类型参数在通用AbstractPopulatingConverter中定义.
>类型参数在CustomerReviewConverter中具体化.
>然后,您尝试在MyCustomerReviewConverter中再次使具体化的类型参数通用.
这只是行不通.您尝试使用具有不同方法签名(不同参数类型)的方法覆盖方法.
您可以覆盖该方法的唯一方法如下:
@Override
public void populate(final CustomerReviewModel source,
final ReviewData target) { /* ... */ }
但是,您可以重载它,而不是覆盖该方法:
public void populate(final MyCustomerReviewModel source,
final MyReviewData target) { /* ... */ }
如果使用MyCustomerReviewModel和MyReviewData参数在MyCustomerReviewConverter类型的对象上调用populate()方法,编译器将选择最具体的填充方法,即重载方法.
内容总结
以上是互联网集市为您收集整理的java – 扩展泛型类的类的错误覆盖方法全部内容,希望文章能够帮你解决java – 扩展泛型类的类的错误覆盖方法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。