首先为了举例方便,先来个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); } }
*
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)的原因是其参数为两个
..
1. 这个符号既可以匹配任何字符序列,又可以充当通配符,以计算所匹配的参数中的 参数个数
2. 若不用于调用的参数部分或执行连接点中,则通配符”..”能够用来匹配任何以句点 开始和结束的字符序列。
例子:
假设如下的包层次:
com.company.department.room.class1
com.company.department.room.class2
com.company.departemnt.class3
1) com.company.department.room .* 匹配以上的class1和class2,使用*,系统将认为room和实际类之间没有类型。
2) com.company.department . * 匹配class3
3) com.company.departemnt ..* 匹配class1、class2、class3
4) private * com.company.departemnt ..*(..) 匹配com.company.departemnt包层次下的所有似有方法,这些方法可以有任何类型和任何个数的参数。
该通配符可以匹配一个类型层次,而不是单个的类。
假设有如下类:
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开始的方法。
闽公网安备 35060202000074号