2013-04-23 107 views
1

我想编译一个扩展Java类的Scala类文件。这里是类定义,它是基本的。在加载时,在主机应用程序中,对象应使用超类的方法'post'将“Hello from Scala”写入主机的输出窗口。使用从Scala中的Java类继承的方法

import com.cycling74.max.MaxObject; 

public class FirstClass extends MaxObject{ 
    public FirstClass{ 
     post("Hello From Java"); 
    } 
} 

这个编译和运行良好的应用程序。

这里是我的翻译斯卡拉(说实话,我不是100%肯定我完全明白Scala的构造函数):

import com.cycling74.max._ 

class FirstClass() extends MaxObject { 
    super.post("Hello from Scala") 
} 

但是,当我尝试用scalac编译,我收到以下错误:

dm$ scalac -cp max.jar FirstClass.scala 
FirstClass.scala:3: error: value post is not a member of com.cycling74.max.MaxObject with ScalaObject 
    super.post("Hello from Scala") 
      ^
one error found 

我不知道为什么编译器告诉我,“后”是不是一个成员函数,我敢肯定,我拙劣的语法斯卡拉,但不能确定什么是错的。

谢谢!

EDIT

这里是从最大窗口中的输出中,除了改变代码如下规定,我刚添加的Scala的库,以最大的动态loadpath。这是令人兴奋的

MXJ System CLASSPATH: 
    /Applications/Max 6.1/Cycling '74/java/lib/jitter.jar 
    /Applications/Max 6.1/Cycling '74/java/lib/jode-1.1.2-pre-embedded.jar 
    /Applications/Max 6.1/Cycling '74/java/lib/max.jar 
MXJClassloader CLASSPATH: 
    /Applications/Max 6.1/Cycling '74/java/classes/ 
    /Users/dm/maxmsp/classes 
    /Users/dm/maxmsp/jars/jline.jar 
    /Users/dm/maxmsp/jars/scala-compiler.jar 
    /Users/dm/maxmsp/jars/scala-dbc.jar 
    /Users/dm/maxmsp/jars/scala-library.jar 
    /Users/dm/maxmsp/jars/scala-partest.jar 
    /Users/dm/maxmsp/jars/scala-swing.jar 
    /Users/dm/maxmsp/jars/scalacheck.jar 
    /Users/dm/maxmsp/jars/scalap.jar 
Jitter initialized 
Jitter Java support installed 
Hello from Scala 
+1

在MaxObject如何定义'POST'? – 2013-04-23 14:31:58

+1

我不知道太多,因为只有罐子包含在Max分配中。根据Java文档它是:public static void post(java.lang.String message) – awfulHack 2013-04-23 14:49:56

回答

1

假设post方法的definitioin在MaxObject作为..

public class MaxObject {   
    public static void post(java.lang.String message){ 
     System.out.println("printing from MaxObject.post :: " + message); 
    } 
} 

,你可以直接调用post法阶为 - ,

class FirstClass extends MaxObject { 
    MaxObject.post("Hello from Scala") 
} 

逸岸,如果你不是强制要求延长MaxObject ..你也可以使用它作为..

class FirstClass{ 
    MaxObject.post("Hello from Scala") 
} 

消费它:

val fc = new FirstClass //> printing from MaxObject.post :: Hello from Scala 
+0

它工作!我将最大窗口的输出添加到问题中 – awfulHack 2013-04-23 15:08:02