繁体   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