簡體   English   中英

Java 泛型作為構造函數參數

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM