Skip to main content
 首页 » 编程设计

java之java 是否有等同于 python __call__ 的东西

2025年05月04日29del

刚开始学python,遇到过__call__方法。我通过运行一个简单的示例了解何时调用 __init__ 以及何时调用 __call__ :

class Constructor: 
    def __init__(self, a): 
        print "__init__ called" 
 
    def __call__(self): 
        print "__call__ called" 
 
    def dummy(self): 
        print "a dummy method called" 
 
print "creating x obj" 
x = Constructor(1) 
print "calling x object" 
x() 

控制台输出:

creating x obj 
__init__ called 
calling x object 
__call__ called 

我的问题是:

  1. 我有 java 背景,我知道 __init__ 映射到 java 构造函数,java 是否有等同于 __call__ 的方法来帮助我更好地理解这一点?
  2. 谁能给我一个简单的例子,说明 __call__ 何时有用?

请您参考如下方法:

__call__ 等同于在类上重载 () 运算符。这在 C++ 中是可能的,但在 Java 中不行。它允许一个人拥有函数对象(有时称为仿函数)。

在 Python 中,这些被称为可调用对象。

简单来说,这允许您将对象视为函数。

这些概念的实际用途超出了本答案的范围,但互联网上有大量信息。例如Wikipedia .