问题

2011-03-12 81 views
1

在Combinator的类:问题

public static <KEY, T> void getCombsIntoTreeMap(int N, int K, 
              TreeMap<KEY, T> map, 
              Class<? extends KEY> keyIstance, 
              Class<? extends T> valueIstance) 
{...} 

和小样类;

TreeMap<Hand, int[]> mappa = new TreeMap<Hand, int[]>(); 
int[] keyIstance = new int[2]; 
Hand valueIstance = new Hand(new int[]{0}); 
Combinator.getCombsIntoTreeMap(53, 5, mappa, 
           keyIstance.getClass(), 
           valueIstance.getClass()); 

;

编译器只是说:

Comp.java:85: <KEY,T>getCombsIntoTreeMap(int,int,java.util.TreeMap<KEY,T>,java.lang.Class<? extends KEY>,java.lang.Class<? extends T>) in Combinator cannot be applied to (int,int,java.util.TreeMap<Hand,int[]>,java.lang.Class<capture#86 of ? extends int[]>,java.lang.Class<capture#138 of ? extends Hand>) 
    Combinator.getCombsIntoTreeMap(53, 5, mappa, keyIstance.getClass(), valueIstance.getClass()); 
      ^

我需要帮助。
感谢

+0

似乎你有'keyIstance'和'valueIstance'错误的方式在某处。 – 2011-03-12 20:57:49

+0

对不起...我没有使用&lt;&gt;&gt; – StefanoS 2011-03-12 20:58:38

回答

4

嗯,你Map实例具有类型参数列表<KEY, T>,和你的函数希望“KEY”类第一,“T”类第二位,但你传递的类到函数顺序错误。

换句话说,你的映射是用“KEY”为“Hand”并且值为“int []”来声明的,但是你的“keyIstance”(应该是“Instance”)的类型为int[]和看起来倒退了。

+0

在一个Map中,第一个类型参数是键类型,第二个是值类型。因此'keyIstance'和'valueIstance'与您的映射声明不一致。 – 2011-03-12 20:58:36