我有一个API(来自第三方java库),看起来像:
public List<?> getByXPath(String xpathExpr)
Run Code Online (Sandbox Code Playgroud)
在名为DomNode的类上定义
我在scala函数中尝试这个:
1: def removeChild(node: DomNode, xpath: String) {
2: val lst: List[?] = node.getByXPath(xpath)
3: val child: DomNode = lst(0)
4: child.getParentNode().removeChild(child)
}
Run Code Online (Sandbox Code Playgroud)
但它不会在scala中编译.我在第2行得到错误.
根据答案,我修改了它,现在它是:
1: def removeChild(node: DomNode, xpath: String) {
2: val lst = node.getByXPath(xpath)
3: val child = lst(0).asInstanceOf[DomNode]
4: child.getParentNode().removeChild(child)
}
Run Code Online (Sandbox Code Playgroud)
现在我在第3行得到错误:java.util.List类型的lst [?0]不接受参数
我也尝试了val lst: List[_] = node.getByXPath(xpath)
但是这给了我同样的错误:
type mismatch;
found : java.util.List[?0] where type ?0
required: scala.List[_]
Run Code Online (Sandbox Code Playgroud)
所以我仍然被困住了.
在第3行重新判断你的错误:记住它是一个Java列表,而不是Scala列表,所以试试吧
val child = lst.get(0).asInstanceOf[DomNode]
Run Code Online (Sandbox Code Playgroud)