繁体   English   中英

Java和Jython与方法名称的集成问题

[英]Java and Jython integration issue with method names

我正在遵循Jython和Java Integration中的指令。

这个想法很简单; make Java接口,并匹配python类。 问题是,使用接口函数setX()和setY()时,我总是在执行文件时出错。 我必须修改名称,如setXvalue()或setYvalue(),以避免错误。

Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class    
org.python.core.PyTraceback
at org.python.core.PyException.tracebackHere(PyException.java:158)

at org.python.core.PyObject._jcall(PyObject.java:3587)
at org.python.proxies.Arith$Arith$0.setX(Unknown Source) <-- ERROR???
at Main.main(Main.java:14)

package org.jython.book.interfaces;

这是一个Java接口。

public interface ArithType {

    public void setX(int x); // <-- Error
    public void setYa(int x);
    public int getXa();
    public int getYa();
    public int add();
}

这是部分python类。

class Arith(ArithType):
    ''' Class to hold building objects '''

    def setX(self, x): # << Error
        self.x = x

您可以在此站点找到要测试的源代码 - https://dl.dropboxusercontent.com/u/10773282/2013/Archive.zip

这有什么问题? 为什么方法名称setX()或setY()导致执行错误?

小心访问Jython中对象的属性; Jython使用隐式getter / setter,因此从self.x读取会调用self.getX()等等。 在jython代码中将self.x所有出现更改为self._x (同上为y )使其工作(对我而言)。 实际上,Python中的一个惯例是将非公共成员命名为_...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM