所以这是一个奇怪的问题,但是我试图利用scala中的一段代码并采用一组参数。在scala中,参数是隐式的,因此scala可以发挥其魔力来填充那些对象所需的内容。但是,由于我无法使抽象对象在Java中成为“隐式”,因此我需要弄清楚如何创建该对象,但是这对我一生来说都是不可能的。
以下是scala代码:
class AsyncSchemaRegistryClient (
val baseUri: String
) (
implicit as: ActorSystem,
m: Materializer,
ec: ExecutionContext
) extends SchemaRegistryClient[Future] with Json4sSupport {...
因此,这是由原始代码中的另一种方法调用的(在Guice Inject和子模块的较长曲折路径中,很难按原样进行操作),我正在尝试像这样在Java代码中调用它: / p>
private AsyncSchemaRegistryClient asyncSchemaRegistryClient = new AsyncSchemaRegistryClient("test", ActorSystem.create(), Materializer(), new ExecutionContext);
现在ActorSystem.create()似乎是有效的(至少编译器对此不大喊大叫),但是我不能初始化的Materializer和ExecutionContext是抽象的。同样值得一提的是,Materializer是akka.stream.Materializer和ExecutionContext是scala.concurrent.ExecutionContext。
我尝试使用此AsyncSchemaRegistryClient的原因是,它已经设置了很多代码,可以正确调用模式注册表并处理是否返回有效模式数据,这似乎是最简单的方法在我的程序中实现对架构的异步检查。
在此先感谢您提供所有建议!
答案 0 :(得分:1)
尝试
ActorSystem system = ActorSystem.create();
ExecutionContextExecutor ec = system.dispatcher();
ActorMaterializer mat = ActorMaterializer.create(system);
new AsyncSchemaRegistryClient("test", system, mat, ec);