在Kotlin中,我想为一个类添加扩展方法,例如
我该如何使它们在正确的上下文中出现和消失?
注意:本问题是由作者(自问自答问题)有意编写并回答的,以便在SO中提供对常见Kotlin主题的惯用答案。还为了澄清一些针对Kotlin旧版本的非常准确的答案。其他答案也是可以接受的,有许多回答方式!
Entity
类。但是,我只想在Entity
处于事务中时看到这些扩展方法,否则它们将被隐藏。例如,如果我定义这些类和扩展:interface Entity {}
fun Entity.save() {}
fun Entity.delete() {}
class Transaction {
fun start() {}
fun commit() {}
fun rollback() {}
}
我现在可能会在任何时候意外调用 save()
和 delete()
,但我只希望在事务的 start()
后才能使用它们,在 commit()
或 rollback()
之后不能再使用。目前我可以这样做,但这是错误的:
someEntity.save() // DO NOT WANT TO ALLOW HERE
val tx = Transaction()
tx.start()
someEntity.save() // YES, ALLOW
tx.commit()
someEntity.delete() // DO NOT WANT TO ALLOW HERE
我该如何使它们在正确的上下文中出现和消失?
注意:本问题是由作者(自问自答问题)有意编写并回答的,以便在SO中提供对常见Kotlin主题的惯用答案。还为了澄清一些针对Kotlin旧版本的非常准确的答案。其他答案也是可以接受的,有许多回答方式!