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