【问题标题】:Jython override method with same name具有相同名称的 Jython 覆盖方法
【发布时间】:2012-08-11 00:12:56
【问题描述】:

早在 2010 年,我就看到 JRuby 上发生了类似的问题,当时我们试图在 Jruby 中覆盖一个在 Java 源代码上最初重载的方法。我们如何在 Jython 中处理这个问题?更具体地说,我如何指定其中一个重载的方法被覆盖并忽略其余的方法,或者我如何覆盖所有这些方法?

谢谢

【问题讨论】:

  • 您是在尝试调用重载方法,还是在 Python 中定义一个?
  • 我正在尝试调用在 Java 中重载的特定方法,而我在 Jython 中进行了覆盖。

标签: java python jython


【解决方案1】:

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

def my_function(paramA, paramB = None):
  pass

由于 Jython 只是一个 Python 实现,我相信这同样适用。

【讨论】:

  • 对..您能否详细介绍一下我如何使用默认值来指定哪个重载方法?谢谢
【解决方案2】:

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

Jython 做了一些type coercion,但在某些情况下这并没有选择您想要的方法。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-31
    • 2012-04-29
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-23
    相关资源
    最近更新 更多