当scala的方法接受'?0'作为参数类型时,scala期望什么值?

时间:2016-03-09 12:08:36

标签: scala vaadin

我想在{strong> String setValue()中使用 vaadin 传递scala类型参数。< / p>

问题: 它显示为def setValue(x$1: ?0): Unit。这意味着它期待一些?0类型的arg。

我不知道如何处理这个问题。 如果有人能够准确地解释这个类型是什么,它接受什么样的值以及如何将String类型arg传递给该方法,那将是很好的。

注意setValue(Object newValue)可与 java 一起使用。

以下是代码段。

def getProcessTreeContainer(): HierarchicalContainer = {
var container = new HierarchicalContainer();
container.addContainerProperty("process", classOf[java.lang.String], null)

val tc = new TableCommon();
var process_menu_data_object_list = tc.getProcessTree();
val size = process_menu_data_object_list.size()

val obj = process_menu_data_object_list.iterator()
while (obj.hasNext()) {
  val key = obj.next().id
  val parent_key = obj.next().family_id
  var name = ""
  if (key == parent_key) {
    val l = obj.next().name

    //println(l.toString()+"...at step 1")
    println(("okiiess".asInstanceOf[String]))

    var child: Item = container.getItem(container.addItem(key))
    child.getItemProperty("process").setValue(l.asInstanceOf) 
    //  arg l.asInstanceOf(), what I am passing in setValue() method, throws NullPointerException.      
  } else {
    container.setParent(key, parent_key)
  }

   //println("okay...")
}
return container;
}

1 个答案:

答案 0 :(得分:1)

?0不是数据类型,它是Scala编译器告诉你它不知道类型是什么。问题是child.getItemProperty("process") returns a raw type Property for some reason,它们在Scala中不受支持,也不应在Java中使用(它应该返回Property<?>)。将其投射到Property[String],因为您知道它的类型实际是什么。