为java.io.FileOutputStream编写一个aspectj切入点



我想为new FileInputstream(File file)构造函数编写一个切入点。例如在java中创建新文件的一种常见方法是:

File file = new File(myDirectory, "myFileName.txt");
new FileOutputStream(file);

到目前为止,我尝试过的是:

内部FileCreation.aj:

import java.io.File;
import java.io.FileOutputStream;
aspect FileCreation {
pointcut FileOutputStream1(File file): call(FileOutputStream FileOutputStream(File)) && args(file);
FileOutputStream around(File file): FileOutputStream1(file) {
System.out.println("I was called!!");
return proceed(file);
}
}

为了测试这个钩子是否工作,我添加了一个print语句。

然而,这似乎并没有被调用。

不确定这种情况下的错误是什么。

问题是构造函数调用语法无效。您需要使用.new,并且不使用返回类型说明符,因为返回类型隐式地始终是截获的构造函数的类。

顺便说一句,注意不要给类之类的方法命名。更好地使用小写的CCD_ 4;f";作为切入点名称。否则,您的代码很难阅读。

package de.scrum_master.aspect;
import java.io.File;
import java.io.FileOutputStream;
aspect FileCreation {
pointcut fileOutputStream1(File file) :
call(FileOutputStream.new(File)) &&
args(file);
FileOutputStream around(File file) : fileOutputStream1(file) {
System.out.println("I was called!!");
return proceed(file);
}
}

相关内容

  • 没有找到相关文章

最新更新