@SubtypeOf(value=GuardedByUnknown.class) @Documented @Retention(value=RUNTIME) @TargetLocations(value={RECEIVER,PARAMETER,RETURN}) @Target(value=TYPE_USE) public @interface GuardSatisfied
x
has type @GuardSatisfied
, then all
lock expressions for x
's value are held.
Written on a formal parameter (including the receiver), this annotation
indicates that the @GuardedBy
type for
the corresponding actual argument at the method call site
is unknown at the method definition site, but any lock expressions
that guard it are known to be held prior to the method call.
For example, the formal parameter of the String copy constructor,
String.String(String s)
, is annotated with @GuardSatisfied
.
This requires that all locks guarding the actual argument are held when
the constructor is called. However, the definition of the constructor
does not need to know what those locks are (and it cannot know, because
the constructor can be called by arbitrary code).
GuardedBy
,
Holding
Modifier and Type | Optional Element and Description |
---|---|
int |
value
The index on the GuardSatisfied polymorphic qualifier.
|