gpt4 book ai didi

java - 从具有子类的类中删除 $init$ 方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:20:57 27 4
gpt4 key购买 nike

我在 Scala 中使用一个 Java 库,它从类定义生成 D-Bus 接口(interface)。它适用于一个简单的 Scala 类:

@DBusInterfaceName("me.TestInterface")
trait TestInterface extends DBusInterface {
def changeSomething(thing: String): Unit
}

我需要添加一个子类来实现 D-Bus 信号:

@DBusInterfaceName("me.TestInterface")
trait TestInterface extends DBusInterface {
def changeSomething(thing: String): Unit

final class SomethingChanged(thing: String) extends DBusSignal("SomethingChanged")
}

当我这样做时,我在我的 D-Bus 接口(interface)上得到了一个扩展方法 $init$,大概是因为这是由 Scala 添加的。

是否可以在 Scala 中生成一个没有这个额外的 $init$ 方法的子类的类?

我显然可以用 Java 编写并导入它,但我宁愿坚持使用纯 Scala。

最佳答案

我找到了一个解决方案。我意识到 Java 使用 static class 作为内部类。 Scala 中的等价物是将类放在伴随对象中:

@DBusInterfaceName("me.TestInterface")
trait TestInterface extends DBusInterface {
def changeSomething(thing: String): Unit
}

object TestInterface {
case class SomethingChanged(thing: String) extends DBusSignal("/me/Test")
}

这在 Scala 2.13 中确实有效,但我不确定这是我可以依赖的行为还是只是当前实现的一个特性。

关于java - 从具有子类的类中删除 $init$ 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57061278/

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