Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[ajdt-dev] Signature-matching bug in inter-method declarations?

Hey All!

Running the test program below, I get the following error:

java.lang.AbstractMethodError: trouble.Trouble$A.ajc$interMethodDispatch2$trouble$getName()Ljava/lang/String; at trouble.Trouble$Bang.ajc$interMethodDispatch1$trouble_Trouble$Bang$trouble_Trouble$A$getName(Trouble.java) at trouble.Trouble$Bang.ajc$interMethod$trouble_Trouble$Bang$trouble_Trouble$A$toString(Trouble.java:40)
	at trouble.Trouble$A.toString(Trouble.java)
	at java.lang.String.valueOf(String.java:2131)
	at java.io.PrintStream.print(PrintStream.java:462)
	at java.io.PrintStream.println(PrintStream.java:599)
	at trouble.Trouble.main(Trouble.java:34)
Exception in thread "main"


public class Trouble {

    static abstract class A {}
    static class B extends A {}

    public static void main(String[] args) {
        System.out.println(new B());
    }

    static aspect Bang {
        abstract String A.getName();
        public String B.getName() { return "B"; }
        public String A.toString() { return getName(); }
    }
}


The crux is in my declaration of A.getName() as package access and B.getName() as public. If they both have identical access modifiers the program runs fine...

Version Info:

Version: 1.1.12
Build id: 20040813151120
AspectJ version: 1.2.0

and:

j2sdk1.4.2_02


Am I missing something obvious or should I submit it to bugzilla?


Thanks,

-phil




Back to the top