[英]Implement a parameterized interface method that has a parameterized class argument with a concrete class
public interface AssignmentInterface<T> {
MetadataFieldInterface<T> getField();
void setField(MetadataFieldInterface<T> field);
}
public class DatasetAcquisitionAssignment implements AssignmentInterface<DatasetAcquisition> {
@Override
public DatasetAcquisitionMetadataField getField() {
...
}
@Override
public void setField(DatasetAcquisitionMetadataField field) { // HERE !!!
...
}
public enum DatasetAcquisitionMetadataField implements MetadataFieldInterface<DatasetAcquisition> { ... }
Eclipse 错误: DatasetAcquisitionAssignment 类型的方法 setField(DatasetAcquisitionMetadataField) 必须覆盖或实现超类型方法
编译也失败
使用public void setField(MetadataFieldInterface<DatasetAcquisition> field) {}
代替解决问题(但在运行时导致进一步的问题,与杰克逊)
我该怎么做才能将 DatasetAcquisitionMetadataField 用作具体方法参数?
你能改变你的界面吗?
public interface AssignmentInterface<T, R extends MetadataFieldInterface<T>>{
MetadataFieldInterface<T> getField();
void setField(R field);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.