java - 通用静态工厂

标签 java generics

我收到编译错误。我希望这里的静态方法返回一个创建并返回 Event<T> 的工厂。目的。我该如何解决这个问题?

import com.lmax.disruptor.EventFactory;

public final class Event<T> {

    private T event;

    public T getEvent() {

        return event;
    }

    public void setEvent(final T event) {

        this.event = event;
    }

    public final static EventFactory<Event<T>> EVENT_FACTORY = new EventFactory<Event<T>>() {

        public Event<T> newInstance() {

            return new Event<T>();
        }


     };

}

最佳答案

类的通用参数不适用于静态成员。

显而易见的解决方案是使用方法而不是变量。

public static <U> EventFactory<Event<U>> factory() {
    return new EventFactory<Event<U>>() {
        public Event<U> newInstance() {
            return new Event<U>();
        }
    };
}

当前版本的 Java 中语法更加简洁。

可以使用存储在静态字段中的相同 EventFactory 实例,但这需要不安全的强制转换。

关于java - 通用静态工厂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22726946/

相关文章:

java - 如何创建接受特定字符的正则表达式?

c# - 通用表单的具体实现在设计器中不起作用

java - 第 N 次组合 ({a, b} = {b, a}) 无重复(枚举/蛮力)

具有类型验证的 Spring getBean

java - 我想在 Java 中反转字符串并删除和复制

与 MS Access 的 java 连接

java - 无法在 Windows 环境中启动 Pentaho BI Server

java - 如何将 Fragment 的上下文转换为界面

java - Archunit 匹配泛型类型的构造函数

c# - 在 C# 中访问泛型值类型的成员