gpt4 book ai didi

generics - 引用具有原始类型约束的基本类型

转载 作者:可可西里 更新时间:2023-11-01 14:24:17 25 4
gpt4 key购买 nike

我一直在玩弄 Scala,试图获得 SMR使用 2.9.1 在 Scala IDE 中编译。 SMR 自 2008 年以来似乎没有受到影响,并且有很多 Unresolved 编译错误。我遇到的问题是这一行:

jobConf.setMapRunnerClass(classOf[ClosureMapper[_,_,_,_]]);

ClosureMapper 是这样定义的:

class ClosureMapper[K1,V1,K2,V2] extends MapRunnable[Writable,Writable,Writable,Writable] { 
...
}

我得到的错误是:

type mismatch; 
found : java.lang.Class[smr.hadoop.ClosureMapper[_, _, _, _]](classOf[smr.hadoop.ClosureMapper])
required: java.lang.Class[_ <: org.apache.hadoop.mapred.MapRunnable]

所以在我看来,JobConf 类的 setMapRunnerClass 方法正在限制类型参数从 MapRunnable 继承(ClosureMapper 这样做),但更具体地说是 MapRunnable 的 raw 类型,而 Scala 似乎没有欣赏。

我尝试了以下方法,但出现了不同的错误:

jobConf.setMapRunnerClass(classOf[ClosureMapper]);

那个给 class ClosureMapper takes type parameters

关于如何让 Scala 识别原始类型约束的任何想法?

最佳答案

您可能必须为 ClosureMapper 的类型参数指定一个界限:

jobConf.setMapRunnerClass(classOf[ClosureMapper[_ <: ClosureMapper[_],_ <: ClosureMapper[_],_ <: ClosureMapper[_],_ <: ClosureMapper[_]]]);

关于generics - 引用具有原始类型约束的基本类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7411481/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com