2012-08-11 73 views
5

在2010年,当我们尝试在Jruby中重写一个在java源代码上被重载的方法时,我发现在JRuby上发生了类似的问题。我们如何在Jython中处理这个问题?更具体地说,我如何指定重载的方法之一,并忽略其余部分,或者如何重写所有这些方法?具有相同名称的Jython重写方法

谢谢

+0

你想调用一个重载方法,或者在Python中定义一个方法吗? – delnan 2012-08-11 01:06:39

+0

我想调用一个在Java中重载的特定方法,我在Jython中重写。 – 2012-08-11 01:22:18

回答

1

Python不支持方法重载(但它支持默认值)。

def my_function(paramA, paramB = None): 
    pass 

由于Jython是仅仅是一个Python实现,我相信同样站在如此。

+1

right ..你可以进入更多的细节,我怎么可以使用默认值来指定哪个重载的方法呢?谢谢 – 2012-08-11 00:35:15

0

要从Jython中调用特定的Java方法,您可能必须使类型非常接近甚至完全匹配。

Jython会执行一些type coercion,但在某些情况下不会选择您想要的方法。

要调用特定基类的公共方法,您可以使用BaseClass.method(self, ...)。要调用受保护的方法,您必须使用prefix方法名称,如self.super__method(...)