명시적인 대상이 없는 값 파라미터 주석은 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