명시적 타깃 없어서 디폴트 타깃이 적절하지 못하고 예상치 못하게 설정될 수 있는 값 매개변수 어노테이션의 사용을 보고합니다.

명시적 타깃이 없는 값 매개변수 어노테이션은 Kotlin 2.1.20 전의 매개변수 자체에만 적용됩니다. 매개변수와 필드 또는 프로퍼티 모두에 적용 가능한 어노테이션의 경우, 해당 어노테이션이 val 또는 var 생성자 매개변수에 사용될 때 이 동작은 의도한 바가 아닐 수 있습니다.

예:


class Example(
    @Param val foo: String,
    @ParamField val bar: String, // 어노테이션이 필드에는 없고 매개변수에만 있습니다
    @ParamProperty val baz: String, // 어노테이션이 프로퍼티에는 없고 매개변수에만 있습니다
    @ParamProperty boo: String,
)

@Target(AnnotationTarget.VALUE_PARAMETER)
annotation class Param
@Target(AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.FIELD)
annotation class ParamField
@Target(AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.PROPERTY)
annotation class ParamProperty

빠른 수정을 적용한 후:


class Example(
    @Param val foo: String,
    @field:ParamField val bar: String,
    @property:ParamProperty val baz: String,
    @ParamProperty boo: String,
)

@Target(AnnotationTarget.VALUE_PARAMETER)
annotation class Param
@Target(AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.FIELD)
annotation class ParamField
@Target(AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.PROPERTY)
annotation class ParamProperty