Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[aspectj-users] ajc issues with interfaces using generics

Hi -
I'm running into a perplexing issue with AJC and I'm hoping someone else has seen this before.

The target of my aspect is the class AlreadyImplementsA, we are simply wanting to throw the 'implements A' onto this class.  AlreadyImplementsA class already does indeed  implement every method defined by the interface A but for whatever reason, AJC complains that AlreadyImplementsA does Not implement A because of the method

    T setInputs(List<I> inputs);

I can have a whole multitude of other methods defined on the interface and AJC does not complain, it seems to have a problem with the fact that the argument to the method on the interface is an Interface (List) with a generic I.  As I have other AJC issues where the method argument is a Map of a generic type and AJC blows up on it as well.   

My aspect below

public aspect BindInterfaceA {
    declare parents: AlreadyImplementsA implements A<ConcreteTImpl, ConcreteIImpl>;

}

My interface A referenced above has an interface method defined as shown below

public interface A<T extends BaseT, I extends BaseI> {

T setInputs(List<I> inputs);
}

The 'exact' AJC error message is 
AlreadyImplementsA must implement the inherited abstract method A<ConcreteTImpl, ConcreteIImpl>.setInputs(Pjava/util/list<LConcreteIImpl;>;)

I am almost positive the problem all boils down to an interface with a generic being passed as a argument to the method (List<I> inputs) in our case, which is causing AJC problems. 
Thanks for any advice you might have on getting past this.

Jason


Back to the top