首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Scala中使用继承自Java类的方法

在Scala中使用继承自Java类的方法
EN

Stack Overflow用户
提问于 2013-04-23 22:29:02
回答 1查看 185关注 0票数 1

我正在尝试编译一个扩展Java类的Scala类文件。这是类的定义,它是最基本的。加载时,在宿主应用程序中,对象应该使用超类的方法'post‘将"Hello from Scala“写入宿主的输出窗口。

代码语言:javascript
运行
复制
import com.cycling74.max.MaxObject;

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

这在应用程序中编译和运行得很好。

以下是我对Scala的翻译(老实说,我不能100%确定我完全理解Scala中的构造函数):

代码语言:javascript
运行
复制
import com.cycling74.max._

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

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

代码语言:javascript
运行
复制
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

我不确定为什么编译器告诉我'post‘不是一个成员函数,我确定我搞砸了Scala语法,但不能确定哪里错了。

谢谢!

编辑

以下是Max窗口的输出,除了按照下面的说明更改代码外,我还将Scala库添加到Max的动态加载路径中。真令人兴奋

代码语言:javascript
运行
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-23 22:58:31

假设MaxObjectpost方法的定义为..

代码语言:javascript
运行
复制
public class MaxObject {        
    public static void post(java.lang.String message){
        System.out.println("printing from MaxObject.post :: " + message);
    }
}

您可以在scala中直接调用post方法,如下所示:

代码语言:javascript
运行
复制
class FirstClass extends MaxObject {
    MaxObject.post("Hello from Scala")
}

实际上,如果您不是被强制扩展MaxObject..您还可以将其用作..

代码语言:javascript
运行
复制
class FirstClass{
    MaxObject.post("Hello from Scala")
}

将其作为:

代码语言:javascript
运行
复制
val fc = new FirstClass   //> printing from MaxObject.post :: Hello from Scala
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16171986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档