java反射的问题

时间:2011-03-12 20:50:09

标签: java reflection

在Combinator类中:

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

和Comp类;

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() );
              ^

我需要帮助 感谢

1 个答案:

答案 0 :(得分:4)

你的Map实例有类型参数列表<KEY, T>,你的函数首先需要“KEY”类,第二个需要“T”类,但是你要将类传递给函数错误的顺序。

换句话说,您的地图声明为“KEY”为“Hand”且值为“int []”,但您的“keyIstance”(顺便说一下应该是“Instance”)的类型为{{1这似乎是倒退。