Java 有必要用匕首2注射所有东西吗?

Java 有必要用匕首2注射所有东西吗?,java,android,dependency-injection,dagger-2,Java,Android,Dependency Injection,Dagger 2,我是新手。我对用匕首注射什么和不注射什么感到困惑。我知道有必要使用Dagger注入Android框架类和我的类,但是否真的有必要使用Dagger注入基本Java类,如String、StringBuilder等 public String create(Context context) // Creating Simple objects in the method itself { StringBuilder builder=new StringBuilder(); ....

我是新手。我对用匕首注射什么和不注射什么感到困惑。我知道有必要使用Dagger注入Android框架类和我的类,但是否真的有必要使用Dagger注入基本Java类,如String、StringBuilder等

 public String create(Context context) // Creating Simple objects in the method itself
{
 StringBuilder builder=new StringBuilder();
    ....
   return builder.toString();
}


public String create(Context context,StringBuilder builder) // Injecting everything
 {
....
return builder.toString();
}

你不需要注射任何东西。您可以在方法中创建任何您喜欢的内容。方法内部只是普通的旧Java代码

仅当您在该方法中创建的对象不关心特定值,而只需要一个值时,才将其作为参数注入

关于注入公共类,您需要对它们进行限定:您在这里注入的字符串不一定与您在那里注入的字符串相同。因此,您需要一些消除歧义的方法,例如注释


但是,如果您将注入所有内容作为理所当然的事情,那么最终将得到大量的注释。有时候你确实想这样做;有时候不是。当您编写更多代码时,您会感觉到这一点。

换句话说,注入的重要部分是,它让您能够管理对象的状态(包括生命周期,如果您需要的话)

因此,如果您有一个没有状态的类(例如,一个提供一些无状态函数的Util类),则永远不要注入该类


如果您的StringBuilder类不需要共享状态(即跨两个对象使用同一个StringBuilder),那么您就不需要注入它。

这与您只想依赖接口而不想依赖无状态对象的实现时的情况非常相似。@MooingDuck,这似乎也是有效的;
@Binds
注释就是为它设计的。答案可能至少应该提到这个概念。