問題タブ [scala-java-interop]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
3420 参照

java - JavaConvertersasScalaメソッドの時間計算量

Scalaバージョン2.9以降、java.util.List次のように記述することで、他のコレクションからScalaのデータ構造に変換するための便利なコンバーターが存在します。

これは、既存のJavaコードと対話するときにScalaの利点を活用できるので、素敵な小さな機能です。

ただし、関連する時間とスペースの複雑さについては不明であり、公式ドキュメントには何も見つかりませんでした。したがって、次の質問があります。

JavaConvertersの複雑さ(時間とスペース)に関する情報はどこで入手できますか?

0 投票する
1 に答える
967 参照

scala - オプション フィールドを持つケース クラス用の Java フレンドリーな API を作成するにはどうすればよいですか

データmongodbを永続化するために使用するScalaでいくつかのケースクラスを作成しています。クライアント アプリは Java で記述されており、これらのケース クラスのインスタンスを渡すことで私のリポジトリを使用しています。

オプションのフィールドを使用しない限り、問題なく動作します。

JavaからScalaのオプションを参照したくないので、クライアントが次のようなものを呼び出せるようにするコンストラクターをオーバーライドしたいと思います

コンパニオン オブジェクトのファクトリ メソッドも問題ありません。私は、スカラ deps なしで Java を記述できるようにするソリューションを探しています。できれば、コンストラクターを呼び出すよりも複雑ではありません。考え?

0 投票する
6 に答える
8468 参照

java - Scalaにアクセスします。Javaからなし

scala.NoneJavaからどのようにアクセスできますか?

最後の行により、コンパイラーは「typescala.Noneはパラメーターを取りません」で終了します。

これは「シンボルコンストラクターNone()が見つかりません」で失敗します。

これは「シンボル変数Noneが見つかりません」で失敗します。

2007年にはこれは機能していましたが、その後Scalaが変更されました。Javaコンパイラは以下を提供しますerror: incompatible types

0 投票する
2 に答える
6623 参照

scala - Scala:Javaライブラリからの例外を処理する最良の方法は?

ScalaプロジェクトのJavaライブラリを使用しているとしましょう。そのJavaライブラリは例外をあちこちにスローしますが、Scalaメソッドがスローできる例外を確認する方法がないため(ドキュメント化する場合を除いて)、「Scalaの世界で」それらを伝播させるだけでは快適ではありません。だから、これは私が書く傾向がある種類のコードです:

次に、通常、Either.RightProjection.flatMap戻るメソッドをチェーンするか、戻るEither[Throwable, ...]メソッドと他のメソッドEither.RightProjection.mapを混在させるために使用します。Either[Throwable, ...]または単に値Either.foldで何かをするためにThrowable。どういうわけか、しかし、これはまだ完全に正しいとは感じていません。

これは、ScalaでJavaの例外を処理するための最も「慣用的な」方法ですか?もっと良い方法はありませんか?

0 投票する
2 に答える
4540 参照

scala - javapを使用してJavaからscala.Noneを使用する方法を学ぶには?

以前の質問Accessing scala.None from Javajavapでは、以前は Javaからアクセスする方法を理解していたようscala.Noneです。彼らがどのようにそれをしたか知りたいです。参考までに、答えは次のとおりです。

これは次のように短縮できます。

このプログラム ( ) が与えられた場合OptionTest.scala:

私はjavapこのようにそれを実行しました:

これはjavap出力の一部です。

scala.Noneとで javap も実行しましたscala.Optionjavap出力から次のことをどのように判断しますか。

  1. NoneNone.type拡張するタイプの唯一のオブジェクトですOption
  2. apply()コンパニオン オブジェクトのメソッドが必要です

?

0 投票する
1 に答える
5405 参照

java - Java で Scala クラスを使用できない

Scala と Java は相互にクラスを使用できると思います。

しかし、自分の Java クラスが同じパッケージ内の Scala クラスを使用できないという状況に陥りました。

scala クラスは次のように定義されます。

このコードを使用しようとしているコードは次のとおりです。

私が得たエラーは次のとおりです。

誰かがこれについてのヒントを教えてもらえますか?

どうもありがとう

0 投票する
5 に答える
46341 参照

java - Scala コードを Java コードに自動的に変換する

Scala で作成したアプリがあり、チーム メンバーの何人かがその Java バージョンを必要としています。Scala で書かれた別の API を使用するデモ アプリであり、Java から API を使用できる Java バージョンのアプリが必要です。ただし、アプリはやや大きく、Java で手動で書き直したくありません (また、Scala を学習したくありません)。Scala コードから (読み取り可能な) Java コードを自動的に生成するツールはありますか?

0 投票する
2 に答える
683 参照

java - Java 静的クラス メンバーと Scala の相互運用性

An Overview of the Scala Programming Language, Second Edition から:

上記の例では、Scala プログラムはJava で定義されたクラスであるメソッドstartsWith およびsubstringof を呼び出します。Stringまたout、Java クラスの static フィールドにアクセスし、その (オーバーロードされた)メソッドSystemを呼び出します。printlnこれは、Scala に静的クラス メンバーの概念がない場合でも可能です。実際、すべての Java クラスは Scalaでは 2 つのエンティティとして認識されます。すべての動的メンバーを含むクラスと、すべての静的メンバーを含むシングルトン オブジェクトです。

Scala のコンパニオン オブジェクトを Java バイトコードに変換することは理解していますが、反対の例 (Java から Scala へ)の上部ブロック引用符 " is seen in Scala " の太字テキストが正確に何を意味するのかはわかりません。

静的メンバーを持つ Java クラスが実際に変換されたり、Scala の 2 つのエンティティとして解釈されたりするということですか? それとも私の仮定の両方が間違っていますか?

0 投票する
1 に答える
3445 参照

java - JavaコードからScalavarargsを使用する方法

ScalaコードからJavavarargsを呼び出すことに関する記事はたくさんありますが、逆の方法で見つけたのはこの質問だけでした。具体的な例がないjavaでscalavarargメソッドを使用することです。

Eclipseでは機能しないのに対し、Scalaでは機能scala.Consoleするという理由で、いくつかのJavaコードから使用しようとしています。java.io.Consoleしかし、私は方法を得ることができません

2番目の引数にaを期待しているようで、Javaでscala.collection.Seq[Any]を作成する方法がわかりません 。Seqどうすればこれを回避できますか?

私が試したこと:

1)nullを使用する

-で報酬を受け取りNullPointerExceptionます。

2)をに置き換えますnullが、javacは、メソッドがないscala.collection.Seq.empty()など、あらゆる種類のエラーを報告します。Seqempty

3)パッケージオブジェクトNil内のオブジェクトを使用しますが、ここで提案されている構文は、ですが、解決できません。scala.collection.immutablescala.collection.immutable.package$Nil$.MODULE$

もちろんreadLine()、varargsを使用しない方法を使用することもできますが、それは簡単すぎます。