@Retention(value=RUNTIME) @Target(value={TYPE_USE,TYPE_PARAMETER}) @Repeatable(value=MultiVar.class) public @interface Var
{@literal @}TaintingParam("aParam")
class A {
}
{@literal @}TaintingParam("bParam")
class B {
{@literal @}Var(arg="bParam", param="aParam") A f1;
{@literal @}Var(arg="bParam", param="aParam", wildcard=Wildcard.EXTENDS) A f2;
}
is equivalent to:
class A«aParam» {
}
class B«bParam» {
A«aParam=bParam» a;
A«aParam=? extends bParam» b;
}
public abstract String arg
public abstract String param
public abstract Wildcard wildcard