@Target(value=FIELD)
@Retention(value=CLASS)
public @interface val
@val String name; // a public read-only property
You use the property directly as declared:
String theName = foo.name; // compiles as a call to foo.getName()
When used in an interface the property is public and abstract, a public getter is generated. If the property is
initialized, the getter is default
and returns the initialized value.
When used in a class the property is public by default, a private final backing field is generated having the same
name, and a public getter is generated returning the field. The property must be initialized either in its
declaration or in the constructor(s).
A property can be declared with static
. When used in a class, the same rules apply as non-static. Static
interface properties, however, must always be calculated -- getter/setter methods must be provided.
Note, the final
and abstract
modifiers can be used in a property declaration; they apply to the
getter/setter accessor methods. Thus, if there are user-defined getter/setter methods corresponding with the
property, they must reflect the modifiers from the property.
Modifier and Type | Optional Element and Description |
---|---|
manifold.rt.api.anno.any[] |
annos
Use this argument to specify annotations to apply to the val's generated getter method.
|
PropOption[] |
value
Access options to override the property field's declared access.
|
public abstract PropOption[] value
Copyright © 2021. All rights reserved.