Jython:有没有一种干净的方法来实现带有函数引用的Java接口?

时间:2010-03-24 07:39:00

标签: jython

我知道我可以像这样用Jython实现Java接口:

class MyListener (Listener): 
  def foo(self, event):
    print(str(event))

Python具有一流的功能,因此看起来有点过分 - 特别是对于具有一种方法的接口。有没有办法只传递lambda或在接口中实现单个方法的函数?

2 个答案:

答案 0 :(得分:3)

从Jython 2.5.2(beta 2)开始,Jython函数作为单一方法Java接口的实现工作。来自http://www.zyasoft.com/pythoneering/2010/09/jython-2.5.2-beta-2-is-released/

  

Python函数可以直接传递给采用单个方法接口的Java方法(例如Callable或Runnable)。这意味着您现在可以传递一个回调函数,通常是一个闭包,而不是将它包装在实现该接口的类中。 Tobias Ivarsson实现了这一功能。

答案 1 :(得分:1)

根据在线示例,可以使用AWT / Swing Event界面。只需使用正确的参数创建一个闭包,传递它,Jython应该完成剩下的工作。不幸的是,我没有成功地为自我声明的接口复制这种行为,因为我总是得到“TypeError:arg无法被强制”的异常。

我也非常想知道这是否可能,如果可能,我做错了什么。