将Python中的Scala与JPype一起使用

将Python中的Scala与JPype一起使用,scala,scala-java-interop,jpype,Scala,Scala Java Interop,Jpype,我有一个通过JPype从Python调用Java程序的系统。我想将Java代码切换到Scala。例如,我有: package jnets; class JVector{ double [] x; public JVector(double[] vec){ this.x = vec; } public double[] plus(double[] y){ assert (x.length==y.length); do

我有一个通过JPype从Python调用Java程序的系统。我想将Java代码切换到Scala。例如,我有:

package jnets;

class JVector{
    double [] x;
    public JVector(double[] vec){
        this.x = vec;
    }
    public double[] plus(double[] y){
        assert (x.length==y.length);
        double[] z = new double[x.length];
        for (int i=0; i<x.length; i++)
            z[i] = x[i]+y[i];
        return z;
        }
    }
现在,我尝试在Scala中执行同样的操作:

package jnets;

class SVector(xi: Array[Double]){
  var x = xi
  def plus(y: Array[Double]): Array[Double] = {
    assert(x.length==y.length)
    val z = Array[Double](x.length)
    for (i <- 0 until x.length)
      z(i) = x(i)+y(i)
    return z
  }
}
怎么了?如果我
javap JVector.class
我得到:

class jnets.JVector {
  double[] x;
  static final boolean $assertionsDisabled;
  public jnets.JVector(double[]);
  public double[] plus(double[]);
  static {};
}
如果我做了
javap SVector.class
,我会得到:

public class jnets.SVector {
  public double[] x();
  public void x_$eq(double[]);
  public double[] plus(double[]);
  public jnets.SVector();
  public jnets.SVector(double[]);
}
所以。。。。我猜这与这个
static{}有关行,但无法确定如何使scalac使.class文件与Java文件相同


有什么想法吗?

尝试使用@BeanProperty作为输入参数,请参见“谢谢”。我试过了,但没用,看到了吗
class jnets.JVector {
  double[] x;
  static final boolean $assertionsDisabled;
  public jnets.JVector(double[]);
  public double[] plus(double[]);
  static {};
}
public class jnets.SVector {
  public double[] x();
  public void x_$eq(double[]);
  public double[] plus(double[]);
  public jnets.SVector();
  public jnets.SVector(double[]);
}