gpt4 book ai didi

java - 有没有办法在运行时动态地将方法分配给 Java 类?

转载 作者:行者123 更新时间:2023-12-01 07:18:03 25 4
gpt4 key购买 nike

考虑这个基类:

public class Cat {
public void meow() {
// meowing
}
}

由于某种原因,cats 子类不能从这个 Cat 类继承,因为它们必须从另一个基类继承,而 Java 不支持多重继承。因此:

public class Cat1 extends BaseClass1 {

}

public class Cat2 extends BaseClass2 {

}

public class Cat3 extends BaseClass3 {

}

如何动态扩充 CatX 类的实例以从 Cat 类继承 meow 方法?

伪代码可能是:

public cat1Instance = new Cat1();
Cat.augmentWithCatBehavior(cat1Instance);

我有办法实现这个目标吗?

更新:构图不是我想要的。对于组合,我需要在所有 Cat1CatN 类中拥有一个 Cat 类的实例。我必须在每个类中创建一个包装方法,以便我可以调用该meow。这是大量的样板代码。这就是为什么我说动态增强

最佳答案

不,Java 类的结构在编译时固定,并且只能检查(使用反射),但不能在运行时动态更改。

有可能 generate 整个类在运行时动态变化。尽管这明显违背了使用静态编译语言(例如 Java)的目的。

另一个答案是查看 AOP ,Java 中的某些框架(例如 Spring AOP)支持这一点。这里的想法是识别“横切”关注点,并让框架以某种方式添加相应的代码。一个典型的例子是“注释”方法来执行“日志记录”,然后 AOP 框架只需添加执行一些标准化日志记录所需的代码。

关于java - 有没有办法在运行时动态地将方法分配给 Java 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51444628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com