Annotating constructor parameters seems to do nothing when compiled to bytecode. I get no compiler warnings either.
The following works. getAnnotations for the name field returns javax.annotation.Nullable.
class Person { @Nullable var name: String = _; } The following doesn't, neither with val or var.
class Person(@Nullable var name: String) This is probably not intentional, so is there something I am missing or should I go file a bug report?
You need to specify what should get annotated when you specify annotations on constructor parameters.
To do that annotate your annotation with one ore more annotations from scala.annotation.target, e.g. getter, setter or as in your case field:
import annotation.target.field class Person(@(Nullable @field) var name: String) You can also use type aliases for that:
type NullableField = Nullable @field class Person(@NullableField var name: String) Now this specific annotation and others are in the package scala.annotation.meta rather than scala.annotation.target
import scala.annotation.meta.{field, param}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With