Java通用映射

时间:2015-06-26 16:32:04

标签: java generics

如何在Java中定义这样的地图?

Map<Class<T extends myObject>, MyObjectConverter<T>>

问题是两个参数中的T。每个地图条目的T应该不同。但我希望地图仅限于“共享一个共同的T”的键值对

以下定义有效,但我认为必须有更好的方法 - 没有CompilerWarnings:

Map<Class<? extends myObject>, MyObjectConverter>

1 个答案:

答案 0 :(得分:1)

假设你有一个实现Map的类。

public class Cache<T> implements Map<... something ...> {
}

主要问题是你需要在你的T类声明中澄清,而不是在Map接口的约束中。

public class Cache<T extends MyObject> implements Map<T, MyObjectConverter> {
  ...
}

同样(对于方法等),您需要澄清泛型&#34;类型&#34;在限制参数之前使用它。

public <T extends MyObject> Collection<T> doFunc(T input, MyObjectConverter converter) {
  ...
}