我正在“Daggering”我的 Android 应用程序,我面临一个小问题,我不知道是我还是框架的错。如果是我,我会对自己感到非常失望:)
我有以下课程要提供:
@Singleton
public class XmlService {
private final DataCommitter<XmlWritable> mXmlCommitter;
private final DataReader<XmlPushable> mXmlReader;
private final ConcurrentObjectMonitor mConcObjMonitor;
@Inject
public XmlService(DataCommitter<XmlWritable> xmlCommitter,
DataReader<XmlPushable> xmlProvider,
ConcurrentObjectMonitor concObjMonitor) {
mXmlCommitter = xmlCommitter;
mXmlReader = xmlProvider;
mConcObjMonitor = concObjMonitor;
}
使用以下(除其他外)类:
public class XmlDataReader implements DataReader<XmlPushable> {
// No Singleton no more.
// Eager Singleton (Therefore it should be made thread safe)
//static XmlDataReader mInstance = new XmlDataReader();
[CUT]
protected XmlPullParser mXmlPullParser;
@Inject
public void XmlDataRead(XmlPullParser xmlPullParser) {
mXmlPullParser = xmlPullParser;
}
这个类在我的 XmlServiceModule 中是这样引用的:
@Module(complete = true)
public class XmlServiceModule {
@Provides DataReader<XmlPushable> provideDataReader(XmlDataReader dataReader) {
return dataReader;
}
}
现在,问题是,注入提供的类是否合法?因为我在 XmlDataReader ctor 上的 @Inject 出现错误:无法注入 public void XmlDataRead(org.xmlpull.v1.XmlPullParser)。
编辑:对不起,伙计们,我的示例代码中有一个错误,但我会保持原样,因为它对于理解下面 Christian 的回答很有用。