gpt4 book ai didi

java - Java 与 Scala 集成 : Extending from Scala classes

转载 作者:行者123 更新时间:2023-12-01 07:13:05 26 4
gpt4 key购买 nike

我创建了一个使用 scala 的项目,该项目具有一些抽象类定义,例如:

abstract class A(n: String) {
require(n!= null)
val name = n

var inputs: List[Input[_]]
var outputs: List[Output[_]]
}

abstract class B(n: String) extends A(n){
def act
def isValid : Boolean
def getCs : List[C[_]]
}

abstract class C[Type]{
var value: Type
}

现在我想在 Java 中使用该项目。我已在新项目中导入 scala lib,并在构建路径中添加了 scala 项目。我正在使用 Eclipse。

但是,当我尝试这样做时:

public class CoolClass extends B {  
public CoolClass(){ }
}

编辑:

我在 Java 中使用它时遇到一些问题,这引起了我的一些疑问。让我一一列举:

  1. 我可以使用 Scala 中的列表吗?或者在 Java 中会出现错误?
  2. 为什么 A 中的变量在 Java 中扩展 B 的类中无法识别?
  3. 如何申报 getCs所以它提供了一个接口(interface)List<C>而不是List<C<?>>

最佳答案

我只是假设,您在 class B 中定义的所有方法也在您的 java class CoolClass 中实现。正如错误消息所述,这里缺少的是对 B 的构造函数的调用。

class CoolClass extends B {
public CoolClass() {
super("");
}
// methods implementations
}

您的类 B 上没有定义默认构造函数,因此您必须显式调用已定义的构造函数,即 B(n: String)

编辑:

1:两边都可以使用任何你想要的东西。尽管在某些特殊情况下方法名称可能会有所不同,例如 scala 中包含特殊字符的任何内容。

2:它们是被识别的,虽然它们不是字段,而是java代码中的方法。您可以使用 this.inputs()this.outputs()

访问它们

3:尝试def getCs[C]:List[C]

关于java - Java 与 Scala 集成 : Extending from Scala classes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10036926/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com