java通用类型-具有相同键和值类型的映射

时间:2019-12-28 17:00:26

标签: java generics

我有Event类和Future类

我需要创建一个这样的地图:

private Map<Event<E>, Future<E>> messageToFuture;

我在这里不能真正使用E,因为它没有定义,但是我需要告诉编译器它们都是相同的类型。

正确的方法是什么?

2 个答案:

答案 0 :(得分:0)

我不确定这是否可以帮助您。
您可以通过以下方式使用:

private Map<Event<?>, Future<?>> messageToFuture;

或者也许这样的肮脏方式可以帮助您:

private Map<Event<Object>, Future<Object>> messageToFuture;

答案 1 :(得分:0)

您需要在类级别定义类型参数E

public class Something<E>  {
    private Map<Event<E>, Future<E>> messageToFuture;
}

或定义Map的子类型并使用它,例如:

public class XXX {
   public interface MapEventE2EventE<E> extends Map<Event<E>,Event<E>>{}
   private MapEventE2EventE<?> messageToFuture;
}