如何使用cglib向java类添加多个实现?

时间:2014-02-23 06:01:54

标签: java cglib

是否可以使用cglib支持此解决方案?

interface I { 
void foo(); 
void boo(); 
}

abstract class B implements I { 
  foo();
}

abstract class C implements I { 
  boo();
}

abstract class D extends B {

}

代码

D d = new D();
d.foo();
d.boo();

1 个答案:

答案 0 :(得分:1)

是的,这对CgLib来说没问题。我甚至试过这样做,这对我来说没问题。我使用cglib-nodep-2.1_3.jar。

如果你想要d.boo();什么都不做,我觉得这里没问题。

如果你想实现Java8默认方法之类的东西,那么传递一个对象的状态就会有点棘手。

唯一不同的是你需要通过Enhancer创建一个对象。如果你想改变" new D();"表现你应该尝试AspectJ。我认为它可以使它与AspectJ一起使用,但是eclipse compliator会一直给你带来问题。它应该可以忽略编译器错误。