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