java错误重写扩展泛型类的类的方法
我有一个类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{...}
提前谢谢
安德里亚
# 1 楼答案
棘手且难以解释
AbstractPopulatingConverter
中定义李>CustomerReviewConverter
中具体化李>MyCustomerReviewConverter
中再次将具体化的类型参数设置为泛型李>这根本不管用。您试图用具有不同方法签名(不同参数类型)的方法重写方法
重写该方法的唯一方法如下:
但是,您可以重载该方法,而不是覆盖该方法:
如果使用
MyCustomerReviewModel
和MyReviewData
参数对类型为MyCustomerReviewConverter
的对象调用populate()
方法,编译器将选择最具体的populate
方法,即重载方法