[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-dev] template implementation for interface

Hi,
  No, the result is not the same. To directly using
inter-type member declaration on the interface will
cause the interface I changed, hence method setX(int
x) is introduced into I which is a good result for the
purpose of being a interface.


Regards,
Rice


--- Nicholas Lesiecki <ndlesiecki@xxxxxxxxx> wrote:

> I think ITDs like
> 
> 		private int I.x;
> 
> would get the same result...
> 
> Nicholas Lesiecki
> Software Craftsman, specializing in J2EE,
> Agile Methods, and aspect-oriented programming
> m: 520 591-1849
> 
> Books:
> * Mastering AspectJ: http://tinyurl.com/66vf
> * Java Tools for Extreme Programming:
> http://tinyurl.com/66vt
> 
> Articles on AspectJ:
> * http://tinyurl.com/66vu and
> http://tinyurl.com/66vv
> On Mar 2, 2005, at 9:46 AM, Rice Yeh wrote:
> 
> > Hi,
> >   The final result should be
> >
> > public class C implements I {
> > 	
> > 	private int x;
> > 	
> > 	public int getX() {
> > 		return this.x;
> > 	}
> > 	
> > 	public void setX(int x) {
> > 		this.x = x;
> > 	}
> > }
> >
> > Regards,
> > Rice
> >
> > --- Rice Yeh <riceyeh@xxxxxxxxx> wrote:
> >
> >> Hi,
> >>   When using aspectj as an extension to my
> project,
> >> I
> >> have the following new idea to extend
> >> the lanuage itself. I do not know whether anyone
> >> else
> >> has raised such idea before. In this
> >> idea, I coin out a new keyword 'template', which
> is
> >> used as a template implementation for
> >> some interface I. See the following example for
> my
> >> idea:
> >>
> >> Step 1:
> >> aspect IntroduceI2T introduces the interface I to
> >> the
> >> template T.
> >>
> >> 	public interface I {
> >> 	
> >> 		public int getX();
> >> 	}
> >> 	
> >> 	public tempalte T {
> >> 	
> >> 	}
> >> 	
> >> 	public abstract aspect IntroduceI2T {
> >> 	
> >> 		declare parents: T implements I;
> >> 		
> >> 		private int T.x;
> >> 		
> >> 		public int T.getX() {
> >> 			return this.x;
> >> 		}
> >> 		
> >> 		public void T.setX(int x) {
> >> 			this.x = x;
> >> 		}
> >> 		
> >> 	}
> >>
> >> Step 2:
> >> Then the aspect IntroduceI2C extends
> IntroduceI2T.
> >> The
> >> aspect IntroduceI2C declares another class
> >> C extends T.
> >>
> >> public aspect IntroduceI2C extends IntroduceI2T {
> >>
> >> 	declare parents: C extends T;
> >> }
> >>
> >> public class C {
> >>
> >> }
> >>
> >> Step 3:
> >> Afer compling, the class C becomes
> >>
> >> public class C {
> >> 	
> >> 	private int x;
> >> 	
> >> 	public int getX() {
> >> 		return this.x;
> >> 	}
> >> 	
> >> 	public void setX(int x) {
> >> 		this.x = x;
> >> 	}
> >> }
> >>
> >> And the interface I is not changed.
> >>
> >> Just an idea for discussion.
> >>
> >> Regards,
> >> Rice
> >>
> >>
> >>
> >>
> >> 	
> >> 		
> >> __________________________________
> >> Celebrate Yahoo!'s 10th Birthday!
> >> Yahoo! Netrospective: 100 Moments of the Web
> >> http://birthday.yahoo.com/netrospective/
> >> _______________________________________________
> >> aspectj-dev mailing list
> >> aspectj-dev@xxxxxxxxxxx
> >>
> http://dev.eclipse.org/mailman/listinfo/aspectj-dev
> >>
> >
> >
> > __________________________________________________
> > Do You Yahoo!?
> > Tired of spam?  Yahoo! Mail has the best spam
> protection around
> > http://mail.yahoo.com
> > _______________________________________________
> > aspectj-dev mailing list
> > aspectj-dev@xxxxxxxxxxx
> >
> http://dev.eclipse.org/mailman/listinfo/aspectj-dev
> >
> 
> _______________________________________________
> aspectj-dev mailing list
> aspectj-dev@xxxxxxxxxxx
> http://dev.eclipse.org/mailman/listinfo/aspectj-dev
> 



	
		
__________________________________ 
Celebrate Yahoo!'s 10th Birthday! 
Yahoo! Netrospective: 100 Moments of the Web 
http://birthday.yahoo.com/netrospective/