【发布时间】:2015-11-04 10:57:33
【问题描述】:
我有这个抽象超类:
public abstract class MediaListActivity extends Activity {
...
abstract void launchMedia(MediaFile mediaFile);
}
以及具体的子类:
public class VideoListActivity extends MediaListActivity {
...
void launchMedia(MediaFile mediaFile) {
// TODO: implement launchMedia()
}
}
在VideoListActivity子类的第一行,Android Studio报错
“VideoListActivity”类必须声明为抽象类或在“MediaListActivity”中实现抽象方法“launchMedia(MediaFile)”
我明白为什么应该这样做。但确实如此!不是吗?我检查了签名是否匹配;我试过 Option+Return 让 IDE 提出修复建议;没有任何效果。
这只是 Android Studio 的一个错误吗?还是我做错了什么?
现在恰好这些类位于不同的包中:子类 VideoListActivity 位于“子包”foo.bar.baz.video 中,而超类 MediaListActivity 位于包 foo.bar.baz 中。
如果我将 VideoListActivity 向上移动到 foo.bar.baz 包中,错误就会消失。但是我有几个这样的具体子类,我不想让顶级包与它们混淆:我喜欢将它们组织到它们的子包中。我能做些什么来消除这个错误(假设它甚至是必要的)?
【问题讨论】:
-
这将是一个很好的 Java 面试问题。
-
@VinayWadhwa:我想我在那次采访中表现不佳。 :-) 另一方面,我认为这代表了 IntelliJ IDEA 改进其手持错误消息的机会。并不是说这可以替代程序员了解类的工作原理。
标签: java android abstract-class packages