java - 实现抽象方法时不使用@Override 注解
问题描述
为什么在这个 Runnable 实现的第一个代码块中没有@Override
注释run()
?-run()
是一个抽象方法:
handler = new Handler();
final Runnable r = new Runnable() {
public void run() {
tv.append("Hello World");
handler.postDelayed(this, 1000);
}
};
handler.postDelayed(r, 1000);
将此与我的 AndroidonCheckedChanged
函数进行比较,该函数也是一个抽象方法:
currentlocation.setOnCheckedChangeListener(object: RadioGroup.OnCheckedChangeListener{
override fun onCheckedChanged(group: RadioGroup?, checkedId: Int) {
}
})
必须有override
修饰符(注意:这是 kotlin 代码,但适用相同的原则)。
为什么第二个第二个代码块需要有 override 关键字,但第一个没有?
解决方案
那是因为语言设计者是这样决定的。Kotlin 需要显式覆盖修饰符,而 Java 不需要。
推荐阅读
- python - python - 如何在给定范围内的给定函数中找到最大值?
- azure-vm-scale-set - 使用默认值创建时如何将 RDP 设置为规模集
- react-native - 安装 react-native-firebase/storage 时出错......“`@react-native-firebase/app/lib.common 在 Haste 模块映射中不存在`”
- python - 在 Pandas 中聚合到没有循环的当前行
- networking - GCP:云功能和内存存储区问题
- android - Android,通过修改依赖避免重复类错误
- android - 无论如何要不断检查 geoLocator.isLocationServiceEnabled() 吗?
- java - 如何将 ScrollView 添加到导航抽屉
- javascript - Selenium Webdriver 错误 [UnhandledPromiseRejectionWarning]
- javascript - browser.alarms 未使用 webextension-polyfill 定义