0

我希望在下面的代码中:

public static <K, D extends List<T>, T> List<Map<K, D>> meth(K k, D d) {
    List<Map<K, D>> daBytes = (List<Map<K, D>>)
            new ArrayList<Map<K, List<List<Byte>>>>();
    // ...
}

编译器找出那D是 aList<List<Byte>>和/或那T<List<Byte>- 并实际摆脱演员表。相反,我得到:

Cannot cast from ArrayList<Map<K,List<List<Byte>>>> to List<Map<K,D>>

无论如何我需要演员表。
为什么 ?我想要的东西是否可能(没有策略模式解决方法)?

4

1 回答 1

2

D调用者指定meth;你不能强迫它成为里面的其他特定类型meth。如果D你的意思是List<List<Byte>>,那么你应该这样写:

List<Map<K, List<List<Byte>>>> daBytes = new ArrayList<Map<K, List<List<Byte>>>>();

如果你的意思D是任意的,那么你应该写

List<Map<K, D>> daBytes = new ArrayList<Map<K, D>>();
于 2013-09-17T19:56:46.650 回答