私は自分の 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) を注入できません。
編集: 申し訳ありませんが、私のサンプル コードにエラーがありましたが、以下のクリスチャンの回答を理解するために役立つ可能性があるため、そのままにしておきます。