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 error: The method setField(DatasetAcquisitionMetadataField) of type DatasetAcquisitionAssignment must override or implement a supertype method
Compilation fails as well
Using public void setField(MetadataFieldInterface<DatasetAcquisition> field) {}
instead fixes the problem (but leads to further problems at runtime, with jackson)
What can I do so I can use DatasetAcquisitionMetadataField as the concrete method argument?
Can you change your interface to?
public interface AssignmentInterface<T, R extends MetadataFieldInterface<T>>{
MetadataFieldInterface<T> getField();
void setField(R field);
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.