【发布时间】:2011-12-11 18:43:53
【问题描述】:
在 C# 和 Objective C 等某些语言中,您可以创建类扩展。这意味着您可以向现有类添加其他方法,而无需扩展该类。这在 Java 中可行吗?
【问题讨论】:
标签: java class-extensions
在 C# 和 Objective C 等某些语言中,您可以创建类扩展。这意味着您可以向现有类添加其他方法,而无需扩展该类。这在 Java 中可行吗?
【问题讨论】:
标签: java class-extensions
正如 Oli 所说,这是不可能的。
值得一提的是,C#中的扩展方法只是调用静态方法的一种奇特方式,所以虽然看起来像
someobject.MyExtensionMethod();
然后编译器将其转换为
SomeStaticClass.MyExtensionMethod(someobject);
你并没有真的向对象添加方法
【讨论】:
不,不是标准 Java。
【讨论】:
您可以使用AspectJ,它使用编译时编织来添加到字节码中。
【讨论】:
我不知道允许您这样做的语言结构,但您可以使用装饰器模式来实现您的目标。
【讨论】:
这可以通过 lombok 库实现。有一个注解叫做@ExtensionMethod。
这为您提供了该功能。
见https://projectlombok.org/features/experimental/ExtensionMethod.html
【讨论】: