繁体   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