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