import java.util.*; public aspect ArgsListOfSomethingExtends { // args(List, List, not List // matches List, List with unchecked warning void rawList(List l) {} void listOfString(List ls) {} void listOfNumber(List ln) {} void listOfDouble(List ld) {} void listOfSomething(List ls) {} void listOfSomethingExtends(List ln) {} void listOfSomethingSuper(List ln) {} public static void main(String[] args) { ArgsListOfSomethingExtends a = ArgsListOfSomethingExtends.aspectOf(); a.rawList(null); a.listOfString(null); a.listOfNumber(null); a.listOfDouble(null); a.listOfSomething(null); a.listOfSomethingExtends(null); a.listOfSomethingSuper(null); } before() : execution(* *(..)) && args(List) { System.out.println("List matches " + thisJoinPointStaticPart); } }