假设库的方法采用回调处理程序Handler
,但为了处理结果,一遍又一遍地使用相同的逻辑。所以,我创建了一个SimpleHandler
具有逻辑的类。onSuccess
onFail
如有必要,假设使用该类的用户覆盖其方法。但是如果对于特定情况不需要处理,用户可能不会覆盖它们,并且SimpleHandler
将使用 的默认处理程序。
问题是,当我自动完成方法时,IDE 会自动插入超级调用,例如super.onFail()
. 对于此代码,如下所示,如果它被覆盖,则不应调用 super 方法。有什么方法可以标记super方法在被覆盖时不应调用,因此IDE将停止插入它?
interface Handler
{
fun onFinished(result:Int);
}
abstract class SimpleHandler:Handler
{
override fun onFinished(result: Int)
{
if(result==0)
{
onSuccess();
}
else
{
onFail();
}
}
open fun onSuccess()
{
println("The developer is so lazy that he did not do anything.");
}
open fun onFail()
{
println("The developer is so lazy that he did not do anything.");
}
}
fun doSomething(handler:Handler)
{
handler.onFinished(10);
}
fun main(args: Array<String>)
{
doSomething(object: SimpleHandler(){
override fun onSuccess() {
println("I won! I won!");
}
override fun onFail() {
//super.onFail();
println("Me fail English?");
}
})
}
在IDEA / Android的工作室,这是由管辖Editor > File and Code Templates
之下Settings
。
在我的安装中,我看到了 Kotlin 的特殊模板Overridden Method Body
,Overridden Scala Method Body
但没有看到。所以我希望 Kotlin 使用 Java 模板。
您可以更改此模板以不调用super
给定的方法名称,但您似乎无权访问超类型的名称。有关如何共享模板,请参阅链接文档。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句