- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我第一次尝试使用@DeclareMixin,要么我做错了什么,要么某个地方有错误。
我已将示例代码发布到 github:https://github.com/benze/AspectJError.git 。我也将一些小片段粘贴在这里。
如果我使用反编译器查看ApplyAspect.class的编译代码,我可以看到ajc已正确添加到实现的接口(interface)中。但是,编译器在 Test 中提示 ApplyAspect 没有 setCreated() 或 getCreated() 方法。
此外,如果我尝试从命令行编译项目,也会遇到相同的编译错误。
我不确定我做错了什么,或者 @DeclareMixin 指令是否在其他地方存在错误。
接口(interface)CreatedBean.java:
public interface CreatedBean {
public Object getCreated();
public void setCreated(final Object created);
}
实现CreatedBeanImpl.java:
public class CreatedBeanImpl implements CreatedBean{
private Object created;
public Object getCreated(){
return this.created;
}
public void setCreated(final Object created ){
this.created = created;
}
}
方面定义:
@Aspect
public class DeclareMixinAspect {
@DeclareMixin("com.benze.bo.ApplyAspect")
public CreatedBean auditableBeanMixin(){
return new CreatedBeanImpl();
}
}
被建议的类(class)(com.benze.bo pkg):
public class ApplyAspect {
private String name = "test class";
}
尝试使用ApplyAspect的类:
public class Test {
public static void main(String[] args) {
ApplyAspect aa = new ApplyAspect();
aa.setCreated(new Date());
System.out.println( aa.getCreated().toString());
System.out.println(aa.toString());
System.out.println("all done");
}
}
pom 非常基本,仅添加了aspectj 插件(和依赖项)。我使用的是 AJ 1.8.2。
最佳答案
我认为你需要在测试类中进行强制转换:
((CreatedBean)aa).setCreated(new Date());
System.out.println(((CreatedBean)aa).getCreated().toString());
IIRC 原因是注释样式代码旨在用 javac 进行编译,而 javac 不知道 DeclareMixin
的影响。
关于java - @DeclareMixin 添加其他类不可见的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26004570/
我第一次尝试使用@DeclareMixin,要么我做错了什么,要么某个地方有错误。 我已将示例代码发布到 github:https://github.com/benze/AspectJError.gi
我正在使用 aspectjrt-1.6.11 提供的 @DeclareMixin。 情况是: @Aspect public class anAspect { @Declar
是否可以将 @DeclareMixin 与 Spring AOP 一起使用?或者他们只支持@DeclareParents? 我想编写一个将 java.beans.PropertyChangeSuppo
我试图为 java.lang#Object 声明的方法提供默认实现。这是一个MCVE对于我遇到的问题。在接口(interface) IAspect 中我声明了一个 equals 方法。在这个类的实现中
我正在试验 AspectJ 的 @DeclareMixin 功能,但我不断收到此错误: /media/thomas/data-disk/sandbox/java/aspectj-tests/src/m
我是一名优秀的程序员,十分优秀!