在下面的代码片段中,为什么第1行和第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<>
继承自 Loader<>
。