[英]Java generic as constructor argument
我有三个类,处理器用于处理不同类型的消息类型。 此处显示的代码不起作用,我想这是因为它不能保证构造函数中的处理器参数与 run 方法中的参数具有相同的类型,也不能保证 receiveMessage 方法返回与删除()接受。
public class Message<T> {
private T payload;
public T get() {
return payload;
}
public void set(T payload) {
this.payload = payload;
}
}
public interface Processor<T> {
List<Message<T>> receiveMessages();
void delete(List<Message<T>> messagePayload);
}
public class ProcessorThread {
private final Processor<?> processor;
public ProcessorThread(final Processor<?> processor) {
this.processor = processor;
}
public void run() {
List<Message<?>> messages = this.processor.receiveMessages();
processor.delete(messages);
}
}
有没有一种无需键入 ProcessorThread class 即可实现类型安全的方法? 也许传递消息有效负载 class 类型左右?
您可以创建一个通用方法来捕获类型:
public void run() {
runGeneric(this.processor);
}
private static <T> void runGeneric(Processor<T> processor) {
List<Message<T>> messages = processor.receiveMessages();
processor.delete(messages);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.