我需要使用返回类型为 java.util.Collection 的函数。我知道对于我的用例,这个函数将始终返回一个 ArrayList (它实现 Collection)。 我正在尝试写这样的声明:
val secMasterPrimaryRic: util.ArrayList[JsonNode] = functionThatReturnsCollection()
但我收到错误:
错误:(88, 87) 类型不匹配;
发现:java.util.Collection[org.codehaus.jackson.JsonNode]
必需:java.util.ArrayList[org.codehaus.jackson.JsonNode]
在 Java 中我可能可以直接转换它。我试图避免使用 asInstanceOf
因为我被告知这非常慢。还有其他方法获取ArrayList吗?
最佳答案
如果您有一个返回类型 X
的函数,但想要类型 Y
,其中 Y
具有“is a”关系,则您可以执行以下操作:
val myValue: TypeIWant = myFunction() match{
case x: TypeIWant => x
case y => convertToTypeIWant(y)
}
这样,您就可以尊重底层类型和任何需要转换的实现,而不必诉诸使用不安全的强制转换。
关于java - Scala:函数有接口(interface)的返回类型,我需要实现类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38640278/