1

質問があります。誰かが私を案内してくれることを願っています。Scala で Guava、Gson、Log4j、Spring、Hibernate などのすべての Java ライブラリを使用できますか ??? たとえば、以下のコードをscalaに変換できますか?? (GUAVA ライブラリ)

import com.google.common.base.Joiner;
public class mainJ {
    public static void main(String[] args) {
        String[] fantasyGenres = {"Space Opera", "Horror", "Magic realism", "Religion"};        
        String joined = Joiner.on(',').join(fantasyGenres);
        System.out.print(joined);
    }
}

メインのプログラミング言語として SCALA を選択したいのですが、scala で制限なく Java ライブラリを使用できるかどうかわかりません。上記のコードを scala で変換できる人はいますか? ありがとう

4

3 に答える 3

9

Scala FAQによると(強調を追加):

標準の Scala バックエンドは Java VM です。Scala クラスは Java クラスであり、その逆も同様です。いずれかの言語のメソッドを、もう一方のメソッドから呼び出すことができます。Scala で Java クラスを拡張でき、その逆も可能です。主な制限は、一部の Scala 機能が Java に同等のものを持たないことです (たとえば、特性)。

Java データ構造を Scala に変換する必要はありますか? またその逆も必要ですか?

Scala で使用するために Java データ構造を変換する必要はまったくありません。それらは「そのまま」使用できます。たとえば、Scala クラスは Java クラスをサブクラス化でき、Scala で Java クラスをインスタンス化でき、メソッドやフィールド (静的であっても) などにアクセスできます。

于 2013-09-24T08:29:51.273 に答える
4

はい、Scala で透過的に Java クラスを使用できます。しかし、Scala で物事をよりエレガントに表現するための慣用的な方法が非常によくあります。与えられた例では、これは次のようになります。

c:\opt>scala
Welcome to Scala version 2.10.0 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_25).
Type in expressions to have them evaluated.
Type :help for more information.

scala> val fantasyGenres = List("Space Opera", "Horror", "Magic realism", "Religion")
fantasyGenres: List[String] = List(Space Opera, Horror, Magic realism, Religion)

scala> val joined = fantasyGenres.mkString(",")
joined: String = Space Opera,Horror,Magic realism,Religion
于 2013-09-24T08:58:46.163 に答える