我有一个 Java 接口(interface),我想在 Scala 中实现。该接口(interface)包含以下方法声明:
public Boolean existsTable(String tableId);
我的 Scala 实现是:
override def existsTable(tableId: String): Boolean = {
val dbmeta = connection.getMetaData()
val dbtables = dbmeta.getTables(null, null, channelId, null)
if (dbtables.next())
// table exists
return true
else
return false
}
由于某种原因,我收到错误 “重写方法存在于特征 xyz 中的表 类型 (tableId: String)Boolean;方法存在表具有不兼容的类型”
但我真的不知道哪里可能存在不兼容的类型,因为它只是一个 boolean 值,即返回类型?
问候。
PS:当我没有实现接口(interface)时,我曾经以完全相同的方式使用过此方法,因此该方法本身应该没有错误。只是 Scala 中 Java 接口(interface)的实现让我很为难。
最佳答案
正如评论中指出的那样,这不起作用的原因是 Scala 的 boolean 值与 Java 的 boolean 值不同。解决此问题的快速方法是:
import java.lang.{Boolean => JBoolean}
override def existsTable(tableId: String): JBoolean
通过为类型设置别名,您想要返回的内容会更加清晰。您当然可以将其定义为:
override def existsTable(tableId: String): java.lang.Boolean
关于java - Scala:实现 Java 接口(interface)会导致类型不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17089760/