Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 为什么在创建类的对象时需要提供注入参数?_Scala_Dependency Injection_Guice - Fatal编程技术网

Scala 为什么在创建类的对象时需要提供注入参数?

Scala 为什么在创建类的对象时需要提供注入参数?,scala,dependency-injection,guice,Scala,Dependency Injection,Guice,我对使用GoogleGuice进行依赖注入有疑问 我有一个特点,就是几乎没有实现的方法 trait ATrait { def someMethodA(parameters: ArgType) = { //code } def someMethodB(parameters: ArgType) = { //code } } object A extends ATrait 现在我有了一个B类,我需要它的方法。所以我注射了它 class B

我对使用GoogleGuice进行依赖注入有疑问

我有一个特点,就是几乎没有实现的方法

trait ATrait {
    def someMethodA(parameters: ArgType) = {
     //code
    }

    def someMethodB(parameters: ArgType) = {
     //code
    }
}    
object A extends ATrait
现在我有了一个B类,我需要它的方法。所以我注射了它

class B @Inject(a: ATrait) {
  //code
}
我还提供了Guice模块类中的绑定

class GuiceModule extends AbstractModule {
  override def configure(): Unit = {
    bind[ATrait].toInstance(A)
  }
}
现在当我创建一个B类的对象时

val b = new B()
它不允许我这样做,所以我的问题是我是否必须手动传递它的对象。GoogleGuice注入有什么用

我可能犯了一些错误,因为我正在学习这一点。如果我没有正确理解某事,请指导我


提前谢谢。

Guice不是那样工作的。如果您想要一个新的根对象,您需要向Guice请求一个新实例

val injector = Guice.createInjector(new GuiceModule())

val a:ATrait = injector.getInstance(classOf[ATrait])

Guice不是那样工作的。如果您想要一个新的根对象,您需要向Guice请求一个新实例

val injector = Guice.createInjector(new GuiceModule())

val a:ATrait = injector.getInstance(classOf[ATrait])