我有以下课程:
import com.google.common.base.Converter;
public class CustomConverter extends Converter<MyClass, String> {
// Implemented overrides are here and working
}
和
public class BaseModule {
}
和
public class MyClass extends BaseModule {
}
我想拥有以下Map
:
Map<EnumIdentifier, Converter<? extends BaseModule, String>> moduleToConverter;
然后在我的代码中,我尝试执行以下操作:
import lombok.val;
// ...
public static void main (String[] args)
{
moduleToConverter = new HashMap<>();
moduleToConverter.put(EnumIdentifier.MyClass, new CustomConverter());
List<BaseModule> itemsToConvert = new ArrayList<>();
itemsToConvert.add(new MyClass());
for (BaseModule item : itemsToConvert) {
val converter = moduleToConverter.get(EnumIdentifier.MyClass);
val convertedData = converter.convert(item); // ERROR HERE
}
}
这在IntelliJ中给出了以下错误
转换 无法将Converter中的(capture <?extended BaseModule>)应用于(BaseModule)
有没有办法使这个想法生效?如果不是,为什么不呢?