Почему в первом блоке кода эта работающая реализация нет аннотации @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);
Сравните это с моей функцией Android onCheckedChanged, которая также является абстрактным методом:
currentlocation.setOnCheckedChangeListener(object: RadioGroup.OnCheckedChangeListener{
override fun onCheckedChanged(group: RadioGroup?, checkedId: Int) {
}
})
который должен иметь модификатор override (примечание: это код kotlin, но применяются те же принципы).
Почему 2-й блок кода должен иметь ключевое слово переопределения, а первый - нет?




Это потому, что разработчики языка так решили. Kotlin требует явных модификаторов переопределения, а Java — нет.
«это код kotlin, но применяются те же принципы» false