【问题标题】:Problems with java reflectionjava反射的问题
【发布时间】:2011-03-13 04:59:13
【问题描述】:

在组合器类中:

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

我需要帮助。
谢谢

【问题讨论】:

  • 好像你在某个地方有 keyIstancevalueIstance 错误的方式。
  • 对不起...我没有使用 &lt 和 &gt

标签: java reflection


【解决方案1】:

您的Map 实例具有类型参数列表&lt;KEY, T&gt;,并且您的函数首先需要“KEY”类,然后是“T”类,但是您将这些类以错误的顺序传递给函数.

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

【讨论】:

  • 是的,在 Map 中,第一个类型参数是键类型,第二个是值类型。因此,keyIstancevalueIstance 的命名与您的地图声明不一致。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多