匕首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的抱歉)