我有一个具有值List(123,456,789)的Object testCat,我想在scala中将此Object转换为List [Object]。当我使用asInstanceOf时,我得到了错误:
DataSource.scala:310: T0 does not take parameters
[ERROR] [Console] [error]
var testCat = eachMultiCat.asInstanceOf(List[Object])
[ERROR] [Console] [error]
有人可以帮我解决这个问题吗? 非常感谢你。
答案 0 :(得分:2)
.asInstanceOf[List[Object]]
带 square 括号,因为它是一个类型参数。
仍然想知道为什么需要从对象转换为对象列表。嗅到腥味!
答案 1 :(得分:0)
试试这个:
val obj1: Object = List(123, 456, 789)
println(obj1)
val obj2 = obj1.asInstanceOf[List[Object]]
println(obj2)
val obj3 = obj1.asInstanceOf[List[Int]]
println(obj3)
// cant do: obj1.map(_*2)
// can't do: obj2.map(_*2)
// this works
println(obj3.map(_*2))
输出:
List(123, 456, 789)
List(123, 456, 789)
List(123, 456, 789)
List(246, 912, 1578)
答案 2 :(得分:0)
我找到了解决问题的方法,这是所有正常工作的代码
val multiCategoryOne =
for { JString(x) <- (content \\ ancesstorCategories").children} yield x
var multiCategoryMany:List[Object] = Nil
if(multiCategoryOne == Nil){
// multiple items in cart
val elements = (content \\ "ancesstorCategories").children
for ( acct <- elements ) {
val eachMultiCat = for { JString(x) <- acct} yield x
multiCategoryMany = multiCategoryMany ::: List(eachMultiCat)
}
}else{
// one item in cart
multiCategoryMany = multiCategoryMany ::: List(multiCategoryOne)
}