Java 相当于 C# 扩展方法

2022-08-31 06:08:20

我希望在对象列表中实现一个功能,就像我在C#中使用扩展方法一样。

像这样:

List<DataObject> list;
// ... List initialization.
list.getData(id);

如何在Java中做到这一点?


答案 1

Java 不支持扩展方法。

相反,您可以创建一个常规的静态方法,或者编写自己的类。


答案 2

扩展方法不仅仅是静态方法,也不仅仅是方便的语法糖,事实上它们是相当强大的工具。最主要的是能够基于不同泛型的参数实例化覆盖不同的方法。这类似于 Haskell 的类型类,实际上,它们看起来像是在 C# 中支持 C# 的 Monads(即 LINQ)。即使放弃LINQ语法,我仍然不知道在Java中实现类似接口的任何方法。

而且我不认为在Java中实现它们是可能的,因为Java的类型擦除泛型参数的语义。


推荐