注释必须调用超级的接口函数
我正在创建接口和一些function,它有一个机构。 需要的是,实现此接口的类在执行其他代码之前,必须在覆盖函数中调用super。 我怎样才能做到这一点?
interface Watcher { fun funWithoutBody() fun startWatching() { //do some important stuff which must be called } }
在某些情况下,Android Studio / IntelliJ IDEA可以处理这种事情,但是这不是通过注释来完成的,而是通过代码检查来完成的 。
例如MissingSuperCall
是IntelliJ IDEA支持的Android Lint Check ( 在IntelliJ IDEA 11.1 | IntelliJ IDEA博客中与Android Lint工具集成 )。
如果您使用的是Android Studio或IntelliJ IDEA,则可以创建自定义检查: IntelliJ IDEA 2016.2 Help ::创建自定义检查 。
我意外地发现了我正在寻找的东西。 这是android.support.annotation
包中的@CallSuper
注解。 文件
使用@CallSuper注释来validation重写方法调用方法的超级实现。 以下示例注释了onCreate()方法,以确保任何重写的方法实现都调用super.onCreate():
@CallSuper protected fun onCreate(savedInstanceState: Bundle?) { }
你可以开始startWatching
抽象,并在另一个函数中调用它。 例如:
interface Watcher { fun funWithoutBody() fun userDefinedStartWatching() fun startWatching() { //insert code you'd normally want to be called when using super() userDefinedStartWatching() } }