import java.util.*; public aspect AfterReturningParameterizedWithWildcards { /* * - returning(List) matches List, List, List with unchecked warning * matches List, List ok (since Double is final) */ after() returning(List ld) : call(* *(..)) { 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 { List rawList(List l) { return l;} List listOfSomething(List ls) { return ls; } List listOfSomeNumber(List ln) { return ln; } List listOfDouble(List ld) { return ld; } List listOfSomeDouble(List ld) { return ld; } List listOfString(List ls) { return ls; } }