[英]Generic interface implementation not working
我的界面是:
public interface SalesForceRecordService<T extends SalesForceRecord> {
T update(T record) throws IOException;
}
我的实现类是:
public class SalesForceRecordServiceImpl<T extends SalesforceRecordImpl> implements SalesforceRecordService {
@Override
public T update(T record) throws IOException {
return null;
}
}
@Override
给出错误,方法不会从其超类覆盖方法。
我无法理解问题所在。
您必须将类型传递给超类,因为它需要一个。 如果您希望SalesForceRecordServiceImpl
也像您发布的一样通用,则将T
传递给SalesForceRecordService
。
尝试这个:
public class SalesForceRecordServiceImpl<T extends SalesForceRecordImpl>
implements SalesForceRecordService<T> {
@Override
public T update(T record) throws IOException {
return null;
}
}
同样以其名称判断, SalesForceRecordImpl
在我看来像是一个具体的实现,所以也许您只想要这样:
public class SalesForceRecordServiceImpl
implements SalesForceRecordService<SalesForceRecordImpl> {
@Override
public SalesForceRecordImpl update(SalesForceRecordImpl record)
throws IOException {
return null;
}
}
首先,在实现类上,还应该将类型模板传递到接口描述中。 否则,编译器无法检查SalesForceRecordServiceImpl
上提供的T是否与SalesforceRecordService
兼容。
public class SalesForceRecordServiceImpl<T extends SalesforceRecordImpl>
implements SalesforceRecordService<T> {
...
(我假设SalesforceRecordImpl是SalesforceRecord的子类型)
其次,强制方法使用@Overrides
注释实现接口,该方法仅从Java 6起可用,因此,如果您使用的是Java 5,则会出现编译器错误
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.