我想在vaadin
的setValue()
中传递一个String
类型参数,scala
.
问题 :它显示为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;
}
?0
不是数据类型,它是Scala编译器告诉你它不知道类型是什么。问题是child.getItemProperty("process")
出于某种原因返回了一个原始类型Property
,这在 Scala 中不受支持,也不应该在 Java 中使用(它应该返回Property<?>
)。投射到Property[String]
,因为你知道它的实际类型是什么。