我的目标:编写自定义字段注释,如果将null设置为可为空的变量,则会引发异常。
data class Contact (
@RequiredAttribute
var name: String?,
var number: String?
)
因此,如果我执行类似val contact = Contact(null, "test")
的操作,则应该以诸如Attribute name can't be set as null.
的消息结尾并出现异常
我的问题:这有可能实现吗?我从来没有用Java或Kotlin编写过自定义注释,所以我对此领域相当陌生。
编辑第二个问题:是否可以检查对象是否具有某些带注释的属性为null,然后引发异常?
答案 0 :(得分:0)
Kotlin已经为此拥有了一个财产代表:
import kotlin.properties.Delegates
var name: String by Delegates.notNull()
文档:
/**
* Returns a property delegate for a read/write property with a non-`null` value that is initialized not during
* object construction time but at a later time. Trying to read the property before the initial value has been
* assigned results in an exception.
*
* @sample samples.properties.Delegates.notNullDelegate
*/
public fun <T: Any> notNull(): ReadWriteProperty<Any?, T> = NotNullVar()
我建议在实现以下目标时使用property delegates:这是惯用的方式,为此添加了属性委托。
如果您确实想在您的Kotlin程序中允许null
,则也可以使用kapt
进行注释处理。有关此here的更多信息。