AspectJ类名称模式

AspectJ类名称模式

首先为了举例方便,先来个java的类

package simple.example;

class TestWildcard

{

       private String userName;

       private String city;

 

       private void setUserName(String name)

       {

              username = name;

       }

      

       private void setCity(String city)

       {

              this.city = city;

       }

      

       public void setInfo(String name, String city)

       {

              setUserName(name);

              setCity(city);

       }

}

 

l         *

1.         *是一种能够用来匹配所有类型的特定类型的名称。

2.         *能够匹配除了’.’以外零个或多个符号哦。

例子:

1)      call(private void TestWildcard .*(*))

       匹配setUserName(String name)

               setCity(String city)

       注意:不匹配setInfo(String name, String city)的原因有二
               
它的访问类型是public

                它有两个参数,而*只能匹配一个

2)      call(* void TestWildcard .*(*))

       匹配setUserName(String name)

               setCity(String city)

               注意:不匹配setInfo(String name, String city)的原因是其参数为两个

l         ..

       1.    这个符号既可以匹配任何字符序列,又可以充当通配符,以计算所匹配的参数中的              参数个数

       2.    若不用于调用的参数部分或执行连接点中,则通配符..能够用来匹配任何以句点                开始和结束的字符序列。

例子:

       假设如下的包层次:

       com.company.department.room.class1

       com.company.department.room.class2

       com.company.departemnt.class3

      

1)      com.company.department.room .* 匹配以上的class1class2,使用*,系统将认为room和实际类之间没有类型。

2)      com.company.department . * 匹配class3

3)      com.company.departemnt ..* 匹配class1class2class3

4)      private * com.company.departemnt ..*(..) 匹配com.company.departemnt包层次下的所有似有方法,这些方法可以有任何类型和任何个数的参数。

 

l         +

       该通配符可以匹配一个类型层次,而不是单个的类。

假设有如下类:

public class DVD

public class SpecialDVD extends DVD

那么call( DVD.new(..))将只能匹配DVD类的构造函数,而无法找到其子类SpecialDVD的构造函数。

call( DVD+.new(..))可以用来匹配DVD类和所有子类的构造函数。

call(public String DVD+.set* (String)) 可以用来匹配DVD类层次中所有名称以set开始的方法。

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值