是否有类似Java或其他流行语言的扩展函数?

时间:2018-03-08 10:39:42

标签: java kotlin

在Kotlin,我们有一个像Extension这样的漂亮功能。 甚至可以将更新的自定义方法添加到其实例化对象的超类中。该方法可以通过代码中创建的对象访问。

我的问题基本上分为两部分。

  1. Java或其他常用的编程语言中是否存在此功能的概念?

  2. 如果上一个答案是,是否有任何解决方法可以用Java或其他语言实现扩展?

4 个答案:

答案 0 :(得分:4)

目前java中似乎没有提供此类功能的功能,但是Lombok通过使用typing.Generic注释扩展api而不扩展类为我们提供了替代方案。他们的网页上提供了示例:

https://projectlombok.org/features/experimental/ExtensionMethod

正如你所看到的,这个功能虽然是实验性的......

答案 1 :(得分:0)

Swift 具有非常相似的扩展功能。您可以在here找到更多信息。

如果你看一下,Kotlin编译的扩展函数是什么,你会看到它们是旧的Java静态方法,接收器作为第一个参数,所以我想在java中如何做到这一点的最好方法是使用静态方法

答案 2 :(得分:0)

许多动态语言都可以使用扩展方法。在大多数动态语言中,扩展方法通常称为monkey patching。例如,在python

答案 3 :(得分:0)

我们在C#和D语言中有扩展,我们在Scala中有隐式方法可以模拟这种语言特性。

在Ruby中,您甚至可以为对象定义方法,而不会影响任何其他类型相同的对象。