[英]Type mismatch with existential types inside Option
我正在嘗試將一堆類傳遞給SparkConf.registerKryoClasses
方法,該方法具有以下簽名:
registerKryoClasses: Array[Class[_]]) => SparkConf
由於可能需要注冊的類可能存在或不存在,因此我將其包裝在Option
並嘗試了此操作(簡化版本):
class SomeClass(val app: String, val classes: Option[Array[Class[_]]]) {
val conf = classes match {
case Some(cs) ⇒ new SparkConf()
.setAppName(app)
.registerKryoClasses(cs)
case None ⇒ new SparkConf()
.setAppName(app)
}
// more stuff
}
IntelliJ給我的提示是, cs
上存在類型不匹配,然后列出了預期的類型和實際的類型。 他們是一樣的。
我在這里想念什么?
以下對我來說很好用,
def someClass(app: String, classes: Option[Array[Class[Any]]]): SparkConf = {
val conf = classes match {
case Some(cs) ⇒ new SparkConf()
.setAppName(app)
.registerKryoClasses(cs)
case None ⇒ new SparkConf()
.setAppName(app)
// more stuff
}
conf
}
val conf = someClass("lol", Some(Array(classOf[String], classOf[Int])))
//org.apache.spark.SparkConf = org.apache.spark.SparkConf@685d92cf
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.