[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] Generic aspects

Ok, thank you for your fast reply. I hope it can be fixed soon, as it would be useful for me.. then again.. you are probably already busy enough :)

Just for the sake of completeness, here is a (not so much) working test case:


/* Error message: Type B does not meet the specification for type parameter 1 (A extends Base) in generic type GenericAspectA */
abstract aspect GenericAspectA<A extends Base> {}
abstract aspect GenericAspectB<B extends SubBase> extends GenericAspectA<B> {}


/* Base extends SubBase extends SubSubBase */
class Base {}
class SubBase extends Base {}
class SubSubBase extends SubBase {}

/* Plain Java implementation */
class GenericA<A extends Base> {}
class GenericB<B extends SubBase> extends GenericA<B> {}


Good luck! Mark



--------------------------------------------------
From: "Andy Clement" <andrew.clement@xxxxxxxxx>
Sent: Sunday, May 11, 2008 8:55 PM
To: <aspectj-users@xxxxxxxxxxx>
Subject: Re: [aspectj-users] Generic aspects

Hi Mark,

The docs only say (
http://www.eclipse.org/aspectj/doc/released/adk15notebook/generics-inAspectJ5.html
):

AspectJ 5 allows an abstract aspect to be declared as a generic type. Any concrete aspect extending a generic abstract aspect must extend a parameterized version of the abstract aspect.

That page of the doc also shows some examples of a hierarchy of abstract generic aspects, although none of them alter the bounds in the way your example does. So the fact that your code won't compile is a bug that needs fixing.

cheers,
Andy.

2008/5/11 Mark Stobbe <markstobbe@xxxxxxxxx>:




Hello,

First of all, I know this is not possible, as it says on the manual page..
but I was wondering why..
In plain Java you can redefine the upperbound of a type parameter, i.e.:


class AbstractComponent<C extends Component> {}
class AbstractWindow<W extends Window> extends AbstractComponent<W> {}

Now.. trying the same thing with aspects.. does not work:

abstract aspect AbstractComponentA<C extends Component> {}
abstract aspect AbstractWindowA<W extends Window> extends
AbstractComponentA<W> {}

So.. my question, why isn't this supported? And what would be the "best"
workaround?

Thanks in advance,
Mark
_______________________________________________
 aspectj-users mailing list
 aspectj-users@xxxxxxxxxxx
 https://dev.eclipse.org/mailman/listinfo/aspectj-users


_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/aspectj-users