是否可以将自定义Java类导入Scala?

512*_*009 1 java scala

我正在尝试学习Scala。到目前为止,我所看到的一切,我都看到它提到Scala与Java完全兼容。“您可以从另一种语言的方法中调用任何一种语言的方法”。但是我只是找不到合适的示例,该示例将自定义Java类导入到Scala中并使用。因此开始怀疑这是否可能吗?你能告诉这个新手吗?

我正在使用记事本,而不是编辑器(使用Eclipse时遇到许多问题)。

我在Java中有一个Employee类:

package Emp;
class Employee {
    String name;
}
Run Code Online (Sandbox Code Playgroud)

并试图将其导入我的scala课程

import Emp._

object Emp extends Employee{
     .......}  
Run Code Online (Sandbox Code Playgroud)

但这只是无法编译。想知道是否缺少概念或语法上的东西;请帮忙。

Vla*_*eev 5

对的,这是可能的。Employee但是,您的课程不是public。添加一个public修饰符,它应该可以工作。

您还应该检查类路径是否正确。确保一切正确的最佳方法是使用SBT这样的构建工具。如果您使用SBT并遵循其常规目录布局(中的Scala源src/main/scala,中的Java源src/main/java),则Scala类将能够轻松查看其Java对应对象,反之亦然。

但是,根据您提供的少量源代码,您也可能会发生名称冲突。您有一个包Emp和一个名为的对象Emp;包和类/对象在Scala和Java中共享名称空间,因此您不能同时拥有一个包和一个完全不相关的同名对象。我建议将软件包重命名为更惯用的名称。

看到这个要点。由于Github不允许在文件名中使用斜杠(因此我用破折号代替了斜杠),所以文件名被弄乱了,但是我相信您的主要想法是。