Android面向切面编程(AOP)
切点表达式的组成如下:
execution(<@注解类型>? <修饰符>? <返回类型> <方法名>(<参数>) <异常>?)
除了返回类型、方法名和参数外,其它项都是可选的。
修饰符指的是public、private、protected,异常指的是NullPointException等。
通配符
@AspectJ 支持 3 种通配符:
*
:匹配任意字符,但它只能匹配上下文中的一个元素..
:匹配任意字符,可以匹配上下文中的多个元素,但在表示类时,必须和*
联合使用,而在表示入参时则单独使用+
:表示按类型匹配指定类的所有类,必须跟在类名后面,如com.lake.Car+
。继承或扩展指定类的所有类,同时还包括指定类本身
@AspectJ 函数按其是否支持通配符及支持的程度,分为 3 类:
- 支持所有通配符:execution(), within()
- 仅支持
+
通配符:args(), this(), target() - 不支持通配符:@args(), @within(), @target(), @annotation()