我收到编译错误。我希望这里的静态方法返回一个创建并返回 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/