Scala - 如何将Object转换为List [Object]

时间:2015-10-12 04:23:36

标签: json scala predictionio

我有一个具有值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]

有人可以帮我解决这个问题吗? 非常感谢你。

3 个答案:

答案 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)
            }