【问题标题】:How to add multiple implementations to java class using cglib?如何使用 cglib 向 java 类添加多个实现?
【发布时间】:2014-02-23 14:23:56
【问题描述】:

是否可以使用 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 ,我该如何改进这个问题?
  • 他们投了反对票,因为他们不明白。拥有 OCJP 后,您将成为 Java 专家。他们是不知道您在说什么的 Java 专家。

标签: java cglib


【解决方案1】:

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

如果你想 d.boo();什么都不做,我认为这里没有问题。

如果您想实现类似 Java8 的默认方法,那么传递对象的状态会有点棘手。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 2017-12-20
    相关资源
    最近更新 更多