以下のコードスニペットでは、1行目と2行目が正常で、3行目がコンパイルエラーを引き起こすのはなぜですか?最初の2行は機能的に3行目と同等ではありませんか?
Loader loader = getLoaderManager().getLoader(0);
PatientLoader patientLoader = (PatientLoader) loader;
patientLoader = (PatientLoader) getLoaderManager().getLoader(0); // ERROR!
これを投げます:
java: somepath/Patient.java:99: inconvertible types
found : android.content.Loader<java.lang.Object>
required: com.example.package.PatientLoader
PatientLoader
間接的に拡張しLoader<>
ます。
私はC#のバックグラウンドを持っていますが、C#ではこれは問題にならないので、Java型システムについて何かが足りないかもしれません。
PatientLoader
拡張しAsyncTaskLoader<Cursor>
ます。そして、Android SDKに精通している人なら誰でも、AsyncTaskLoader<>
extendsを知っているでしょうLoader<>
。