我刚开始学习Scala,现在我想知道如何用一个Scala类实现两个不同的Java接口?假设我有以下用Java编写的接口
public interface EventRecorder {
public void abstract record(Event event);
}
public interface TransactionCapable {
public void abstract commit();
}
Run Code Online (Sandbox Code Playgroud)
但是Scala类一次只能扩展一个类.我怎样才能拥有可以同时履行这两个合同的Scala类?我是否必须将这些界面映射到特征中?
注意,我的Scala类将在Java中使用,因为我试图将用Scala编写的新功能注入到现有的Java应用程序中.现有框架期望两个接口合同都得到满足.
我正在尝试将Scala用作现有Java应用程序的一部分,现在我遇到了一个使用setter方法注入的依赖项的问题(在这部分代码中没有DI框架).如何以Scala方式处理?
在Scala中val,var需要在声明时进行初始化,但我不能这样做,因为Java setter会注入实现某个接口的对象,并且接口是抽象的,无法实例化.
class ScalaLogic {
var service // How to initialize?
def setService (srv: OutputService) = {
service = srv
}
Run Code Online (Sandbox Code Playgroud)
有没有办法初始化,var service以便我以后可以为其分配依赖?它应该是词法范围,以便在整个班级中可见.