import java.util.*; public aspect ArgsParameterizedWithWildcards { /* * - args(List) matches List, List, List with unchecked warning * matches List, List ok (since Double is final) */ before() : execution(* *(..)) && args(List) { System.out.println("List matched at " + thisJoinPointStaticPart); } public static void main(String[] args) { C c = new C(); List ld = new ArrayList(); c.rawList(ld); c.listOfSomething(ld); c.listOfSomeNumber(ld); c.listOfDouble(ld); c.listOfSomeDouble(ld); c.listOfString(new ArrayList()); } } class C { void rawList(List l) {} void listOfSomething(List ls) {} void listOfSomeNumber(List ln) {} void listOfDouble(List ld) {} void listOfSomeDouble(List ld) {} void listOfString(List ls) {} }