首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Java代码中通过Scala注入依赖项

如何从Java代码中通过Scala注入依赖项
EN

Stack Overflow用户
提问于 2019-03-27 17:12:19
回答 1查看 150关注 0票数 3

下面是一个依赖服务:

代码语言:javascript
复制
  public class Service1 {}

通过读取器使用它的Scala代码:

代码语言:javascript
复制
object TupleEx {
  type FailFast[A] = Either[List[String], A]
  type Env[A] = ReaderT[FailFast, Service1, A]

  import cats.syntax.applicative._
  import cats.instances.either._

  def f:Env[Int] = 10.pure[Env]
}

我尝试注入Service1的Java测试:

代码语言:javascript
复制
  @Test
  public void testf() {
    Service1 s = new Service1();
    TupleEx.f().run(s);
  }

我有个例外:

错误:(10,16) java:在类cats.data.Kleisli中运行的方法不能应用于给定类型;必需:没有找到参数: com.savdev.Service1原因:实际和正式的参数列表长度不同

虽然在Scala中,我可以将其运行为:

代码语言:javascript
复制
TupleEx.f().run(s);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-27 17:26:23

尝试:

代码语言:javascript
复制
TupleEx.f().run().apply(s);
  • run()valKleisli中的"getter“方法。
  • apply()是Scala语法中通常隐藏的东西

一般建议:

  1. 用Java编写接口
  2. 在Scala中实现接口
  3. 在用Java编写代码时,只使用Java接口编写的内容。
  4. 在用Java编写代码时,不要试图直接使用Scala接口。

记住: Scala编译器理解Java。Java对Scala一无所知。在Scala中实现Java接口非常简单。使用Java中的Scala接口是很尴尬的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55382975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档