我有一个通过插入“.class”链接到另一个库的类,所以我不知道如何在这个类中注入依赖项,因为我不是创建对象的人和库只是使用默认构造函数实例化该类。
示例:
这是Room
的转换器类public class AttendeeListConverter {
@TypeConverter
public List<Attendee> fromJson(String attendeesJson) {
if (attendeesJson == null) {
return null;
}
return gson.fromJson(attendeesJson, new TypeToken<List<Attendee>>() { }.getType());
}
}
我想注入我的Gson单例实例,但我不是那个创建该转换器类的对象的人,我只是传递“AttendeesListConverter.class”并且对象本身的创建是代码生成。
答案 0 :(得分:2)
如果您既不控制对象创建也不控制对象实例,那么我不认为有一个干净的解决方案。
鉴于这些情况,你唯一可以做的就是从对象中抓取一个组件并让它自己注入。
class Injector {
public static AppComponent component;
}
class AttendeeListConverter {
public AttendeeListConverter() {
AppComponent component = Injector.component
component.inject(this);
}
}
// and initialize it in onCreate of your Application
class MyApp extends Application {
@Inject AppComponent appComponent;
onCreate() {
// ...setup...
Injector.component = appComponent
}
}
您当然也可以将组件静态存储在应用程序本身中,或者某些人也喜欢将应用程序存储在静态变量中,以便您可以使用MyApp.appComponent.inject()
。