Так что это немного странный вопрос, но я пытаюсь использовать фрагмент кода, который находится в Scala и принимает набор параметров. В scala параметры являются косвенными, поэтому scala может использовать свою магию, чтобы заполнить то, что нужно этим объектам. Но так как я не могу сделать абстрактный объект «неявным» в Java, мне нужно выяснить, как создать объект, но я не могу этого сделать для меня.
Вот код скалы:
class AsyncSchemaRegistryClient (
val baseUri: String
) (
implicit as: ActorSystem,
m: Materializer,
ec: ExecutionContext
) extends SchemaRegistryClient[Future] with Json4sSupport {...
Так что это вызывается другим методом в оригинальном коде (по длинному извилистому пути Guice Inject и субмодулей, который достаточно сложен, чтобы следовать как есть), и я пытаюсь вызвать его в java-коде так:
private AsyncSchemaRegistryClient asyncSchemaRegistryClient = new AsyncSchemaRegistryClient("test", ActorSystem.create(), Materializer(), new ExecutionContext);
Теперь ActorSystem.create (), кажется, является действительным (по крайней мере, компилятор не кричит об этом), но Materializer и ExecutionContext, которые я не могу инициализировать, потому что они абстрактны. Также стоит сказать, что Materializer - это akka.stream.Materializer, а ExecutionContext - это scala.concurrent.ExecutionContext.
Причина, по которой я пытаюсь использовать этот AsyncSchemaRegistryClient, заключается в том, что в нем уже много кода, настроенного для правильного вызова реестра схемы и обработки, если он возвращается с действительными данными схемы или нет, и кажется, что это самый простой способ реализовать асинхронные проверки схемы в моей программе.
Заранее спасибо за любые советы!