import java.util.List; public aspect SignatureWildcards { declare warning : execution(* C.*(List)) : "any list"; declare warning : execution(* C.*(List)) : "only foo"; declare warning : execution(* C.*(List)) : "some list"; declare warning : execution(* C.*(List)) : "any list with upper bound"; } class C { public void foo(List listOfSomeNumberType) {} public void bar(List listOfSomeType) {} public void goo(List listOfDoubles) {} }