Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[aspectj-users] How to remove "abstract" with AspectJ?

Is it possible to remove "abstract" from a class using an aspect? The AspectJ
second edition book by Ramnivas doesn't seem to mention this.

Example:

@NameableMixin2
public abstract class Project implements Nameable { }

The rationale of using abstract & implements is to avoid need of:
  ((Nameable))project).getName()

and just use:
  project.getName()

@NameableMixin2 implemented using @AspectJ-notation aspect:

@Aspect
public class NameableAspect2 {

	@DeclareMixin("@NameableMixin2 *")
	public Nameable nameableMixin() {
		return new NameableImpl();
	}
	
}

Let's say that NameableImpl is a complete implementation of Nameable.

Therefore, Project should no longer be abstract.

But when I do this:

Project project = new Project();
project.setName("Hello");

I get "Cannot instantiate the type Project", which is understandable because
it's (originally) abstract.
I want to un-abstract the Project using AspectJ, how do I do this?

-----
http://www.Soluvas.com/ Soluvas - Making eCommerce Work for You 
-- 
View this message in context: http://old.nabble.com/How-to-remove-%22abstract%22-with-AspectJ--tp27617645p27617645.html
Sent from the AspectJ - users mailing list archive at Nabble.com.



Back to the top