Skip to main content

[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!

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 (

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.


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


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"

Thanks in advance,
 aspectj-users mailing list

aspectj-users mailing list

Back to the top