1

一些编程语言具有向类添加“类别”的特性(例如 Objective-C),这意味着在没有子类化的情况下向类添加新功能。

我真的觉得它很有用,但我无法想象在 Java 中模拟此功能的方法。

所以问题是:

在 Java 中模拟类类别看起来如何是一种优雅的模式?我真正想要的是达到同样的效果,而不是以同样的方式。

4

3 回答 3

1

在 Java 8 中,您可能可以通过接口注入(向interface现有类添加新的 s)和默认方法(为方法提供默认实现)的组合来做到这一点interface

于 2012-05-13T15:10:37.597 回答
1

您可以使用AspectJ的类型间声明功能向现有类添加功能。

于 2012-05-13T15:40:43.893 回答
0

我可以看到两种方式。

您可以使用动态代理。此功能意味着 JVM 在运行时为您“实现”接口,提供实现回调方法的能力,您可以在其中调用“真实”实现。

另一种方式是字节码工程。但恕我直言,第一种方法更容易。

于 2012-05-13T15:09:06.797 回答