在下面的代码片段中,为什么第 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<>
extends Loader<>
。