我在 Scala 中使用 Drools Planner(用 Java 编写)时遇到问题。 Drools planner 中的一个接口(interface)声明为:
public interface Score<S extends Score> extends Comparable<S>
然而,另一个接口(interface)使用“Score”作为原始类型:
public interface Solution {
Score getScore();
然后我想在 Scala 中实现这个接口(interface):
class MySolution extends Solution {
def getScore: Score = ...
我得到一个编译错误:Scala 编译器不允许只写 'def getScore: Score'。当我尝试添加“Score[_]”或“Score[whatever]”时,编译器会提示类型不兼容。我该怎么办?
最佳答案
编写一个 Java 类作为 Java 接口(interface)要求和 Scala 允许的桥梁。
SolutionBridge.java:
abstract class SolutionBridge implements Solution {
public Score getScore() {
return scalaGetScore();
}
abstract Score<?> scalaGetScore();
}
SolutionScala.scala:
class SolutionScala extends SolutionBridge {
def scalaGetScore() = null.asInstanceOf[Score[_]]
}
关于java - 在 Scala 中实现具有原始类型的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5279149/