我有这个方法
static public <K> float calculateSimilarity(HashMap<K, Float> hashMap1, Class<K> clazz)
在我称之为方法的部分中,它是这样的:
HashMap<Pair<Long,Long>,Float> newValues1=....; //A.K.A. K is Pair<Long,Long> type.
calculateSimilarity(newValue1, Pair.class); // Doesn't work here!
其中Pair是
org.apache.commons.lang3.tuple.Pair
由两个元素组成的对。
请告诉我在调用calculateSimilarity方法时如何使用Pair.class?因为如果我使用String作为K它可以工作但是在这里配对它没有工作我得到了编译错误。
答案 0 :(得分:3)
对于HashMap<Pair<Long, Long>>
,类型参数K
被推断为Pair<Long, Long>
。所以你需要通过Class<Pair<Long, Long>>
,但是你正在通过Class<Pair>
。你需要使用适当的演员:
calculateSimilarity(newValue1, (Class<Pair<Long, Long>>)(Class<?>)Pair.class);
广告系列是必需的,因为您无法使用Class
字面值直接获取所需的.class
类型。