Android 当为 IntDef 字段分配错误值时,Studio 和 Lint 不会生成错误
Android Studio and Lint don't generate an error when an IntDef field is assigned a wrong value
这是我的代码:
Const.kt
package sample.com.sample_app
object Const {
const val NAVIGATION_MODE_STANDARD = 1
const val NAVIGATION_MODE_LIST = 2
}
NavigationMode.kt
package sample.com.sample_app
import android.support.annotation.IntDef
import java.lang.annotation.Retention
import java.lang.annotation.RetentionPolicy.SOURCE
@Retention(SOURCE)
@IntDef(Const.NAVIGATION_MODE_LIST, Const.NAVIGATION_MODE_STANDARD)
annotation class NavigationMode
OtherAct.kt
package sample.com.sample_app
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
class OtherAct : AppCompatActivity() {
@NavigationMode
private var a: Int = 12
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
a = 34
}
}
没有来自 Android Studio 或 ./gradlew lint
的错误或警告
我的环境:
buildToolsVersion "28.0.2"
kotlin_version = '1.2.41'
implementation 'com.android.support:appcompat-v7:27.1.1'
不幸的是,它只适用于函数的参数而不适用于 属性 本身
这是我的代码:
Const.kt
package sample.com.sample_app
object Const {
const val NAVIGATION_MODE_STANDARD = 1
const val NAVIGATION_MODE_LIST = 2
}
NavigationMode.kt
package sample.com.sample_app
import android.support.annotation.IntDef
import java.lang.annotation.Retention
import java.lang.annotation.RetentionPolicy.SOURCE
@Retention(SOURCE)
@IntDef(Const.NAVIGATION_MODE_LIST, Const.NAVIGATION_MODE_STANDARD)
annotation class NavigationMode
OtherAct.kt
package sample.com.sample_app
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
class OtherAct : AppCompatActivity() {
@NavigationMode
private var a: Int = 12
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
a = 34
}
}
没有来自 Android Studio 或 ./gradlew lint
我的环境:
buildToolsVersion "28.0.2"
kotlin_version = '1.2.41'
implementation 'com.android.support:appcompat-v7:27.1.1'
不幸的是,它只适用于函数的参数而不适用于 属性 本身