我有三個類,處理器用于處理不同型別的訊息。此處顯示的代碼不起作用,我想這是因為無法保證建構式中的處理器引數與 run 方法中的處理器引數具有相同的型別,也不能保證 receiveMessage 方法回傳相同的型別delete() 接受。
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 類就可以實作型別安全的方法?也許傳遞訊息有效負載型別別左右?
uj5u.com熱心網友回復:
您可以創建一個通用方法來捕獲型別:
public void run() {
runGeneric(this.processor);
}
private static <T> void runGeneric(Processor<T> processor) {
List<Message<T>> messages = processor.receiveMessages();
processor.delete(messages);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/437836.html
