在Kotlin,我们有一个像Extension这样的漂亮功能。 甚至可以将更新的自定义方法添加到其实例化对象的超类中。该方法可以通过代码中创建的对象访问。
我的问题基本上分为两部分。
Java或其他常用的编程语言中是否存在此功能的概念?
如果上一个答案是否,是否有任何解决方法可以用Java或其他语言实现扩展?
答案 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中,您甚至可以为对象定义方法,而不会影响任何其他类型相同的对象。