joh*_*crq 26 annotations kotlin
我有这个代码示例:
class MeasureTextView: TextView {
constructor(context: Context?) : super(context)
constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs)
constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr)
constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int, defStyleRes: Int) : super(context, attrs, defStyleAttr, defStyleRes)
companion object{
val UNIT_NONE = -1
val UNIT_KG = 1
val UNIT_LB = 0
}
fun setMeasureText(number: Float, unitType: Int){
val suffix = when(unitType){
UNIT_NONE -> {
EMPTY_STRING
}
UNIT_KG -> {
KG_SUFIX
}
UNIT_LB -> {
LB_SUFIX
}
else -> throw IllegalArgumentException("Wrong unitType passed to formatter: MeasureTextView.setMeasureText")
}
// set the final text
text = "$number $suffix"
}
}
Run Code Online (Sandbox Code Playgroud)
我希望能够在编译时使用自动完成功能和IntDef注释,因此当我调用时setMeasureText(...),静态变量显示为此方法的参数的选项.
我已经搜索了这个,我无法找到Kotlin是否支持这种java风格的注释(例如intdef).所以我尝试了它,并为此做了一个注释,但它不会在自动完成中显示.
我的问题: - Kotlin是否支持Java注释IntDef(最新版本)
如果是,我如何在Android Studio IDE中打开(如果它可以工作,我无法让编译器建议它).
如果不是,是否有任何Kotlin方式进行此编译时间检查
Dim*_*ira 37
奇怪的是,但这个问题在搜索之前与正确答案相同
在这里复制:
import android.support.annotation.IntDef
public class Test {
companion object {
@IntDef(SLOW, NORMAL, FAST)
@Retention(AnnotationRetention.SOURCE)
annotation class Speed
const val SLOW = 0
const val NORMAL = 1
const val FAST = 2
}
@Speed
private var speed: Int=SLOW
public fun setSpeed(@Speed speed: Int) {
this.speed = speed
}
}
Run Code Online (Sandbox Code Playgroud)
yol*_*ole 22
从Kotlin 1.0.3开始,@IntDef不支持注释,但计划在以后的版本中提供支持.
进行这些编译时间检查的Kotlin方法是使用enum class而不是一系列Int常量.
我在 Kotlin 中使用 IntDef 的首选方法是使用顶级声明:
package com.example.tips
const val TIP_A = 1
const val TIP_B = 2
const val TIP_C = 3
@IntDef(TIP_A, TIP_B, TIP_C)
@Retention(AnnotationRetention.SOURCE)
annotation class TipId
class TipsDataProvider {
fun markTip(@TipId tipId: Int) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
不需要额外的类或对象!有关顶级声明的更多信息请参见此处。
| 归档时间: |
|
| 查看次数: |
18777 次 |
| 最近记录: |