【发布时间】:2020-02-23 19:20:38
【问题描述】:
处理器接口:
public interface Processor<T> {
public void process(T request);
public Class<T> getRequestType();
}
处理器实现:
public class TextProcessor extends BaseProcessor implements Processor<TextRequest> {
@Override
public void process(TextRequest request) {
// TODO Auto-generated method stub
}
@Override
public Class<TextRequest> getRequestType() {
// TODO Auto-generated method stub
return TextRequest.class;
}
}
请求类:
public class Request {
private long id;
...
}
文本请求
public class TextRequest extends Request {
String text;
...
}
主类:
private Map<String, Processor<? extends Request>> processors;
public static void main(String[] args) {
Processor<?> processor = processors.get("proc name");
Request request = objectMapper.readValue(json, processor.getRequestType());
processor.process(request);
}
我在process 调用中遇到编译错误。
The method process(capture#10-of ?) in the type Processor<capture#10-of ?> is not applicable
for the arguments (Request)
我该如何解决这个问题?
【问题讨论】:
标签: java generics interface wildcard