[英]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.