This is an example of looping in the case of “extends”:

joinpointtype JP allows after {}

class Main {

        public static void main(String args[]) {
                new A().foo();
        }

}

class B extends A {

	public void foo() {
		//some other code here
		super.foo();
	}
}

class A exhibits JP {
	pointcut JP: call(* print*(..));

	public void foo() {
		System.out.println("foo");
	}
}

aspect Asp advises JP {
	after(JP jp) {
		new B().foo();
	}
}

The looping case for the “use” relationship:

joinpointtype JP allows after {}

class A {

	public static void main(String args[]) {
		Util.print("Hello");;
	}
}

class Util exhibits JP {
	pointcut JP: call(* print*(..));

	public static void print(String s) {
		System.out.println(s);
	}
}

aspect Asp advises JP {
	after(JP jp) {
		Util.print(" World");
	}
}