mirror of
https://github.com/eclipse-aspectj/aspectj.git
synced 2024-08-26 05:57:44 +02:00
51 lines
1.0 KiB
Java
51 lines
1.0 KiB
Java
// In the ConcreteClassA.someMethod() method, the creation of the anonymous class should
|
|
// be ok as the ITD ensures that InterfaceA.a2() is implemented.
|
|
|
|
interface InterfaceA {
|
|
public void a1();
|
|
public void a2();
|
|
}
|
|
|
|
abstract class AbstractClassA implements InterfaceA {
|
|
public void a1() {
|
|
System.out.println("AbstractClassA.a()");
|
|
}
|
|
}
|
|
|
|
public class ConcreteClassA extends AbstractClassA {
|
|
public void someMethod() {
|
|
InterfaceA a = new AbstractClassA() { };
|
|
a.a2();
|
|
}
|
|
|
|
public static void main(String[]argv) {
|
|
new ConcreteClassA().someMethod();
|
|
new concCB().someMethod();
|
|
}
|
|
}
|
|
|
|
aspect IntroAspectA {
|
|
public void AbstractClassA.a2() {
|
|
System.out.println("AbstractClassA.a2() from IntroAspectA");
|
|
}
|
|
}
|
|
|
|
interface IB {
|
|
public void m2();
|
|
}
|
|
|
|
abstract class absCB implements IB {
|
|
public void m1() { }
|
|
}
|
|
|
|
class concCB extends absCB {
|
|
public void someMethod() {
|
|
IB b = new IB() {};
|
|
b.m2();
|
|
}
|
|
}
|
|
|
|
aspect introAspectB {
|
|
public void IB.m2() {System.err.println("absCB.m1() from IB");}
|
|
}
|