允许数据 class 的 属性 只接受某些值
Allow a property of a data class to only accept certain values
先了解一些上下文。在 Android 使用 Kotlin 时,更改可见性的方式如下所示。
myView.visibility = View.VISIBLE
设置任何其他 Int
值而不是 View.VISIBLE
、View.INVISIBLE
或 View.GONE
returns 错误。
现在我有一个 Kotlin 数据 class,它接受类型为 Int
的构造函数参数 flag
。
如何在我的 Kotlin 代码中以相同的方式实现它,使得 myClass.flag = Flag.A
而没有其他值?
可能只是将其定义为枚举
enum view{
GONE=0,
VISIBLE=1,
INVISIBLE=2,
}
class MyView{
Public view visibility { get; set; }
}
如果您希望获得与 View.visibility
常量相同的警告行为,则需要为其编写一个 lint 检查。这里有一些关于做这类事情的博客:
https://www.bignerdranch.com/blog/building-custom-lint-checks-in-android/
https://medium.com/@vanniktech/writing-your-first-lint-check-39ad0e90b9e6
如果你想强制一个类型,那么就像人们说的枚举是一种方式,或者你可以使用密封的 class:
sealed class Flag {
object A : Flag()
object B : Flag()
}
或者只是在 init
块中放入一个 require
检查,其中包含一个有效常量列表,在运行时处理它!
先了解一些上下文。在 Android 使用 Kotlin 时,更改可见性的方式如下所示。
myView.visibility = View.VISIBLE
设置任何其他 Int
值而不是 View.VISIBLE
、View.INVISIBLE
或 View.GONE
returns 错误。
现在我有一个 Kotlin 数据 class,它接受类型为 Int
的构造函数参数 flag
。
如何在我的 Kotlin 代码中以相同的方式实现它,使得 myClass.flag = Flag.A
而没有其他值?
可能只是将其定义为枚举
enum view{
GONE=0,
VISIBLE=1,
INVISIBLE=2,
}
class MyView{
Public view visibility { get; set; }
}
如果您希望获得与 View.visibility
常量相同的警告行为,则需要为其编写一个 lint 检查。这里有一些关于做这类事情的博客:
https://www.bignerdranch.com/blog/building-custom-lint-checks-in-android/
https://medium.com/@vanniktech/writing-your-first-lint-check-39ad0e90b9e6
如果你想强制一个类型,那么就像人们说的枚举是一种方式,或者你可以使用密封的 class:
sealed class Flag {
object A : Flag()
object B : Flag()
}
或者只是在 init
块中放入一个 require
检查,其中包含一个有效常量列表,在运行时处理它!