annotations - Kotlin 注释 IntDef

我有这个代码示例:

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"
    }
}

我希望能够在编译时结合 IntDef 注释使用自动完成功能,所以当我调用 setMeasureText(...) 时, 静态变量显示为该方法参数的选项。

我对此进行了搜索,但找不到 Kotlin 是否支持这种 java 风格的注释(例如 intdef)。所以我已经尝试过了,并为此做了注释,但它不会在自动完成中显示。

我的问题: - Kotlin 是否支持 Java 注解 IntDef(最新版本)

  • 如果是,我如何在 Android Studio IDE 中打开(如果有效,我无法让编译器给出建议)。

  • 如果不是,是否有任何 Kotlin 方式进行编译时检查

最佳答案

奇怪的事情,但这个问题在搜索之前与 right answer 相同

复制到这里:

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
    }
}

https://stackoverflow.com/questions/37833395/

相关文章:

arrays - Kotlin:For 循环必须有一个迭代器方法——这是一个错误吗?

java - Kotlin 文件是否应该放在 Android 中的单独源目录中?

java - Smartcast 是不可能的,因为属性有开放的或自定义的 getter

java - isInitialized - lateinit var 的支持字段此时不可访问

kotlin - 带有 T.() 的 Kotlin 函数签名是什么意思?

kotlin - 如何在 Kotlin 中克隆对象?

java - 使用 JPA Criteria API 进行分页的总行数

kotlin - Kotlin中调用父类(super class)构造函数,Super不是表达式

exception - Kotlin - 抛出自定义异常

string - 字符串中的美元符号字符