@Retention(value=RUNTIME) @Target(value={TYPE_USE,TYPE_PARAMETER}) @Repeatable(value=MultiTainted.class) public @interface Tainted
@ClassTaintingParam("aParam")
class A {
}
class B {
@Tainted(param="aParam") A f1;
@Tainted(param="aParam", wildcard=Wildcard.EXTENDS) A f2;
}
is equivalent to:
class A«aParam» {
}
class B {
A«aParam=@Tainted» a;
A«aParam=? extends @Tainted» b;
}