Проблемы с отражением Java - PullRequest
1 голос
/ 12 марта 2011

в классе 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 Ответ

4 голосов
/ 12 марта 2011

Ваш экземпляр Map имеет список параметров типа <KEY, T>, и ваша функция хочет сначала класс "KEY", а затем класс "T", но вы передаете классы в функцию в неправильном порядке. .

Другими словами, ваша карта объявляется с "KEY", являющимся "Hand", и значением, являющимся "int []", но ваш "keyIstance" (кстати, должен быть "Instance") имеет тип int[] и это кажется задом наперед.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...