问banq大哥,用aspectj如何一次性向多个类添加同一方法

    
fantasia 07-04-26

用asjectj给类com.unmi.User添加一个方法foo()可以定义这样一个方面

public aspect ExtendClassRecipt
{
public void com.unmi.User.foo()
{
System.out.println("introduce a new method foo to class User");
}
}

上面的声明方式只能是一次给一个类加一个方法,比如说有这样一个需求,我把所用的VO都放在一个包里 com.unmi.vo,我向用aspectj一次性给包com.unmi.vo中的类全加上toString()方法,便于调试,aspectj好像扩展类加方法时不能用通配符的

所以没办法写成:

public aspect ExtendClassRecipt
{
public String com.unmi.vo.*.toString() //希望能一次给vo包中所有类都加上toString方法
{
return ReflectionToStringBuilder.toString(this);
}
}

如果vo包中有许多类,一个个类的为他们添加完全相同实现的toString方法实在是太码麻烦了,能批量的进行呢?
banq应该用过aspectj,希望能得到您和大家宝贵的回答。

banq
2007-04-26 08:22

aspectj只是了解,这个问题我也想知道,如果你有答案别忘记贴这里,谢谢了.

按照设计原理来看,方法必然属于某个类,因此,缺省设计考虑都是先类后方法.

fantasia
2007-04-26 10:54

谢谢banq的关注与回答,我觉得批量给多个类添加同一方法还是很有这个需求了,如果aspectj考虑过这种aspectj有没有这种实现方式。