我有以下课程: 包ajia.messaging;
public class MessageCommunicator {
public void deliver(String message) {
System.out.println(message);
}
public void deliver(String person, String message) {
System.out.println(person + ", " + message);
}
}
以下建议:
package ajia.security;
import ajia.messaging.MessageCommunicator;
public aspect SecurityAspect {
private Authenticator authenticator = new Authenticator();
pointcut secureAccess()
: execution(* MessageCommunicator.deliver(..));
before() : secureAccess() {
System.out.println("Checking and authenticating user");
authenticator.authenticate();
}
}
我编译这样的所有内容 - ajc -source 5 ajia\messaging\MessageCommunicator.java ajia\security\SecurityAspect.aj
据我所知,生成的MessageCommunicator.class
已经包含了方面代码。如果标准的java反编译器能够正确地反编译该类,我就会徘徊吗?
答案 0 :(得分:0)
是的,它起作用,至少对JAD反编译器
答案 1 :(得分:0)
反编译器通常通过识别编译器生成的模式来工作。 AspectJ也尝试生成遵循相同类型模式的代码(catch块的字节代码结构,这种事情)。所以通常代码会反编译,除非有一些疯狂的编织工作。 AspectJ项目将接受关于代码的错误报告,该代码不能完全解压缩并尝试解决它。