匕首2 – 在构造函数中注入默认值

我怎样才能注入这个构造函数:

class SomeClass @Inject constructor( dep: Dependency, context: Context, private val otherClass: OtherClass = OtherClass() ) 

我只提供依赖和Context …但它说它不能提供OtherClass 。 它应该需要这个类,因为它有一个默认值…我怎样才能做到这一点?

我认为最简单的方法是注入OtherClass

class OtherClass @Inject constructor()

你也可以使用@Named注释来区分默认的实现和自定义的OtherClass (但是我认为你应该把两个注入模块以避免混淆):

//编辑:看下面的例子

 public static class Pojo { final String string; Pojo(String string) { this.string = string; } @Override public String toString() { return string; } } @Provides @Named("custom") String provideCustomString() { return "custom"; } @Provides String provideDefaultString() { return "default"; } @Provides @Named("custom") Pojo providesCustomPojo(@Named("custom") String custom) { return new Pojo(custom); } @Provides Pojo providesDefaultPojo(String defaultString) { return new Pojo(defaultString); } 

为了注入自定义@Inject @Named("custom")注释(对于java的抱歉)