java - 在 Scala 中实现具有原始类型的方法

标签 java scala drools drools-planner

我在 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/

相关文章:

java - sleep 不足会更改应用程序行为(多线程)

java - 如何使用 jolt 库在列表中转换列表

java - 基于时间的约束和 "now"

java - 如何使用终端调用 Java 方法?

java - 比较两个数组时遇到问题

scala - 如何从使用 simple-build-tool 构建+发布的工件中删除 _<scala-version> 后缀?

scala - 使用 Spark Dataframe scala 将多个不同列转换为 Map 列

内部类中的 Scala 原生方法

java - 如何在多个对象上正确触发 Drools 规则?

java - Drools针对不同用户的规则