import java.util.*; public aspect AfterReturningListOfSomethingSuper { /* * - returning(List) matches List, List * does not match List * matches List, List with unchecked warning * matches List * matches List with unchecked warning */ List rawList(List l) { return l; } List listOfObject(List ls) { return ls; } List listOfNumber(List ln) { return ln; } List listOfDouble(List ld) { return ld; } List listOfSomething(List ls) { return ls; } List listOfSomethingSuper(List ln) {return ln; } List listOfSomethingExtendsNumber(List ln) { return ln; } public static void main(String[] args) { AfterReturningListOfSomethingSuper a = AfterReturningListOfSomethingSuper.aspectOf(); a.rawList(new ArrayList()); a.listOfObject(null); a.listOfNumber(null); a.listOfDouble(null); a.listOfSomething(new ArrayList()); a.listOfSomethingSuper(null); a.listOfSomethingExtendsNumber(new ArrayList()); } after() returning(List ln) : execution(* *(..)) { System.out.println("List matches " + thisJoinPointStaticPart); } }