簡體   English   中英

實現一個參數化的接口方法,該方法具有參數化的 class 參數和具體的 class

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM