Kotlin中有一个美妙的特性,就是扩展(Extension)。我们可以将新的自定义方法添加到已实例化对象的超类中。该方法可以通过在代码中创建的对象进行访问。
我的问题基本上分为两个方面。
在Java或其他广泛使用的编程语言中是否存在这种特性的概念?
如果前一个答案是否定的,那么是否有任何变通方法可以在Java或其他语言中实现扩展?
Kotlin中有一个美妙的特性,就是扩展(Extension)。我们可以将新的自定义方法添加到已实例化对象的超类中。该方法可以通过在代码中创建的对象进行访问。
我的问题基本上分为两个方面。
在Java或其他广泛使用的编程语言中是否存在这种特性的概念?
如果前一个答案是否定的,那么是否有任何变通方法可以在Java或其他语言中实现扩展?
目前,Java似乎没有提供这样的功能,但是Lombok通过使用@ExtensionMethod
注解来扩展API而不是扩展类为我们提供了替代方法。他们的网页上提供了示例:
https://projectlombok.org/features/experimental/ExtensionMethod
正如您所看到的,这个功能是实验性的...
Swift具有非常相似的扩展功能。您可以在此处找到更多信息。
如果您查看Kotlin中的扩展函数编译结果,您会发现它们是带有接收器作为第一个参数的旧式Java静态方法,因此我想在Java中实现这个功能的最佳方法是使用静态方法。
我们在C#和D语言中有扩展,并且我们在Scala中有隐式方法可以模拟这种语言特性。
在Ruby中,您甚至可以为一个对象定义方法,而不会影响任何其他相同类型的对象。