繁体   English   中英

泛型作为Java中的泛型类型?

[英]generic as a generic type in Java?

我有这个方法

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!

哪对是

org.apache.commons.lang3.tuple.Pair

一对由两个元素组成。

你能告诉我在调用calculateSimilarity方法时应该如何使用Pair.class? 因为如果我使用String作为K它工作但是在这里它不起作用我得到了编译错误。

对于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类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM