对不起这个基本问题,我已经有一个用Java编写的大型软件(我正在使用Eclipse Mars进行编辑),并且我想更改其中的某些类并使用Scala而不是Java,这可能吗?
无缝Java互操作-Scala在JVM上运行,因此Java和Scala堆栈可以自由混合以实现完全无缝的集成。
如果单击它,它会为您提供更多信息:
无缝结合Scala和Java
Scala类最终是JVM类。您可以创建Java对象,调用它们的方法并从Scala透明地继承自Java类。同样,Java代码可以引用Scala类和对象。
在此示例中,Scala类Author实现了Java接口Comparable并与Java Files一起使用。Java代码使用伴随对象Author中的方法,并访问Author类的字段。它还使用JavaConversions在Scala集合和Java集合之间进行转换。
在此示例中:
Author.scala
:
class Author(val firstName: String,
val lastName: String) extends Comparable[Author] {
override def compareTo(that: Author) = {
val lastNameComp = this.lastName compareTo that.lastName
if (lastNameComp != 0) lastNameComp
else this.firstName compareTo that.firstName
}
}
object Author {
def loadAuthorsFromFile(file: java.io.File): List[Author] = ???
}
App.java
:
import static scala.collection.JavaConversions.asJavaCollection;
public class App {
public List<Author> loadAuthorsFromFile(File file) {
return new ArrayList<Author>(asJavaCollection(
Author.loadAuthorsFromFile(file)));
}
public void sortAuthors(List<Author> authors) {
Collections.sort(authors);
}
public void displaySortedAuthors(File file) {
List<Author> authors = loadAuthorsFromFile(file);
sortAuthors(authors);
for (Author author : authors) {
System.out.println(
author.lastName() + ", " + author.firstName());
}
}
}
您的示例可能是反过来的,在Scala应用程序中使用Java类,但是由于最终还是JVM类(并且上面的示例java.io.File
在Scala代码中使用了Java类,例如),所以是一样的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句