自己写的第一段AOP代码。

代码1:使用安全的rand()替代原来相对薄弱的rand()。
Rand.java
/*  * 项目名称 AspectJShow  * 包 名 aop.demo1  * 文 件 名 Rand.java  * 创建日期 2005-4-7  */ package aop.demo1; /**  * 类名 Rand  *  * 提供非安全的rand()方法。  *  * @author DigitalSonic  */ public class Rand {  public static void main(String[] args) {   rand();  }    /** * 非安全的rand()方法。 * * @return -1 */  public static int rand() {   System.out.println("The undesirable rand() method is called.");   return -1;  } }

Secure_Rand.aj
/* * 项目名称 AspectJShow * 包 名 aop.demo1 * 文 件 名 Secure_Rand.aj * 创建日期 2005-4-7 */ package aop.demo1; /** * 方面名 Secure_Rand * * 提供安全的rand()方法。 * * @author DigitalSonic */ public aspect Secure_Rand { pointcut Rand() : call(public static int rand()); //切入点 int around() : Rand() { System.out.println("Security rand() method is called."); return 1; } }


代码2:检查malloc()返回是否正常,这里我新建一个String[]代替C中的malloc()。
Malloc.java
/* * 项目名称 AspectJShow * 包 名 aop.demo2 * 文 件 名 Malloc.java * 创建日期 2005-4-7 */ package aop.demo2; /** * 类名 Malloc * * 提供非安全的malloc()方法。 * * @author DigitalSonic */ public class Malloc { public static void main(String[] args) { malloc(10); } /** * 非安全的malloc()方法。 * * @param Size 数组的大小 * @return String[] 生成的数组 */ public static String[] malloc(int Size) { System.out.println("Unsafe malloc(" + Size + ") method is called."); return new String[Size]; } }

Malloc_Check.aj
/* * 项目名称 AspectJShow * 包 名 aop.demo2 * 文 件 名 Malloc_Check.aj * 创建日期 2005-4-7 */ package aop.demo2; /** * 方面名 Malloc_Check * * 提供malloc_check()方法。 * * @author DigitalSonic */ public aspect Malloc_Check { pointcut Malloc() : call(public static String[] malloc(int)); after() returning(String[] RetrunValue) : Malloc() { if (!(RetrunValue instanceof String[])) { System.out.println("malloc() failed. Exiting..."); System.exit(-1); } else System.out.println("String[" + RetrunValue.length + "] is constructed."); } }


代码3:综合上述两端代码,加上一个Debug,在init_msg()前后各输出一段文字。
ComprehensiveDemo.java
/* * 项目名称 AspectJShow * 包 名 aop.demo3 * 文 件 名 ComprehensiveDemo.java * 创建日期 2005-4-7 */ package aop.demo3; import aop.demo1.*; import aop.demo2.*; /** * 类名 ComprehensiveDemo * * 综合范例 * * @author DigitalSonic */ public class ComprehensiveDemo { public static void main(String[] args) { String[] Msg; int i; Msg = init_msg(4); i = Rand.rand() % 4; System.out.println(Msg[i]); } /** * 生成一个字符串数组。 * * @param Size 数组大小 * @return String[] 字符串数组 */ public static String[] init_msg(int Size) { System.out.println("Message Number " + Size); return Malloc.malloc(Size); } }

Debug.java
/* * 项目名称 AspectJShow * 包 名 aop.demo3 * 文 件 名 Debug.aj * 创建日期 2005-4-7 */ package aop.demo3; /** * 方面名 Debug * * @author DigitalSonic */ public aspect Debug { pointcut init_msg() : call(public static String[] init_msg(int)); before() : init_msg() { System.out.println("Entering init_msg."); } after() : init_msg() { System.out.println("Leaving init_msg."); } }


环境:Eclipse 3.01+AJDT 1.2.1+JDK1.5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值