gpt4 book ai didi

java - 从 Java 调用带有参数和内部类的 Scala 抽象类

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:42:30 24 4
gpt4 key购买 nike

如果我定义一个 Scala 类:

 class X(i:Int) {
println (i)
}

如何在 Java 代码中使用此类?

[编辑] 实际上,我的问题稍微复杂一些

我有一个抽象类

 abstract class X(i:Int) {
println (i)
def hello(s:String):Unit
}

我需要在 Java 代码中使用它。是否可以轻松做到?

[EDIT2] 考虑以下代码

 object B {
case class C(i:Int)
}
abstract class X(i:Int) {
println (i)
def hello(a:B.C):Unit
}

在这种情况下,以下 java 代码在 Netbeans IDE 中出错但构建正常:

 public class Y extends X  {
public void hello(B.C c) {
System.out.println("here");
}
public Y(int i) {
super(i);
}
}

我得到的错误是:

hello(B.C) in Y cannot override hello(B.C) in X; overridden method is static, final

Netbeans 6.8、Scala 2.8。

到目前为止,我认为唯一的解决方案是忽略 NB 错误。

这是一张图片,显示了我得到的确切错误: IDE error using scala code from java

最佳答案

为您的类生成的字节码将与 Java 定义相同:

abstract class X implements scala.ScalaObject {
public X(int i) {
System.out.println(i);
}

public abstract void hello(String s);

//possibly other fields/methods mixed-in from ScalaObject
}

完全按照您对等效 Java 的方式使用它;子类化并提供 hello 方法的具体实现。

关于java - 从 Java 调用带有参数和内部类的 Scala 抽象类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6232621/

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