問題タブ [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.
java - JavaConvertersasScalaメソッドの時間計算量
Scalaバージョン2.9以降、java.util.List
次のように記述することで、他のコレクションからScalaのデータ構造に変換するための便利なコンバーターが存在します。
これは、既存のJavaコードと対話するときにScalaの利点を活用できるので、素敵な小さな機能です。
ただし、関連する時間とスペースの複雑さについては不明であり、公式ドキュメントには何も見つかりませんでした。したがって、次の質問があります。
JavaConvertersの複雑さ(時間とスペース)に関する情報はどこで入手できますか?
scala - オプション フィールドを持つケース クラス用の Java フレンドリーな API を作成するにはどうすればよいですか
データmongodbを永続化するために使用するScalaでいくつかのケースクラスを作成しています。クライアント アプリは Java で記述されており、これらのケース クラスのインスタンスを渡すことで私のリポジトリを使用しています。
オプションのフィールドを使用しない限り、問題なく動作します。
JavaからScalaのオプションを参照したくないので、クライアントが次のようなものを呼び出せるようにするコンストラクターをオーバーライドしたいと思います
コンパニオン オブジェクトのファクトリ メソッドも問題ありません。私は、スカラ deps なしで Java を記述できるようにするソリューションを探しています。できれば、コンストラクターを呼び出すよりも複雑ではありません。考え?
java - Scalaにアクセスします。Javaからなし
scala.None
Javaからどのようにアクセスできますか?
最後の行により、コンパイラーは「typescala.Noneはパラメーターを取りません」で終了します。
これは「シンボルコンストラクターNone()が見つかりません」で失敗します。
これは「シンボル変数Noneが見つかりません」で失敗します。
2007年にはこれは機能していましたが、その後Scalaが変更されました。Javaコンパイラは以下を提供しますerror: incompatible types
:
scala - Scala:Javaライブラリからの例外を処理する最良の方法は?
ScalaプロジェクトのJavaライブラリを使用しているとしましょう。そのJavaライブラリは例外をあちこちにスローしますが、Scalaメソッドがスローできる例外を確認する方法がないため(ドキュメント化する場合を除いて)、「Scalaの世界で」それらを伝播させるだけでは快適ではありません。だから、これは私が書く傾向がある種類のコードです:
次に、通常、Either.RightProjection.flatMap
戻るメソッドをチェーンするか、戻るEither[Throwable, ...]
メソッドと他のメソッドEither.RightProjection.map
を混在させるために使用します。Either[Throwable, ...]
または単に値Either.fold
で何かをするためにThrowable
。どういうわけか、しかし、これはまだ完全に正しいとは感じていません。
これは、ScalaでJavaの例外を処理するための最も「慣用的な」方法ですか?もっと良い方法はありませんか?
scala - javapを使用してJavaからscala.Noneを使用する方法を学ぶには?
以前の質問Accessing scala.None from Javajavap
では、以前は Javaからアクセスする方法を理解していたようscala.None
です。彼らがどのようにそれをしたか知りたいです。参考までに、答えは次のとおりです。
これは次のように短縮できます。
このプログラム ( ) が与えられた場合OptionTest.scala
:
私はjavap
このようにそれを実行しました:
これはjavap
出力の一部です。
scala.None
とで javap も実行しましたscala.Option
。javap
出力から次のことをどのように判断しますか。
None
None.type
拡張するタイプの唯一のオブジェクトですOption
apply()
コンパニオン オブジェクトのメソッドが必要です
?
java - Java で Scala クラスを使用できない
Scala と Java は相互にクラスを使用できると思います。
しかし、自分の Java クラスが同じパッケージ内の Scala クラスを使用できないという状況に陥りました。
scala クラスは次のように定義されます。
このコードを使用しようとしているコードは次のとおりです。
私が得たエラーは次のとおりです。
誰かがこれについてのヒントを教えてもらえますか?
どうもありがとう
java - Scala コードを Java コードに自動的に変換する
Scala で作成したアプリがあり、チーム メンバーの何人かがその Java バージョンを必要としています。Scala で書かれた別の API を使用するデモ アプリであり、Java から API を使用できる Java バージョンのアプリが必要です。ただし、アプリはやや大きく、Java で手動で書き直したくありません (また、Scala を学習したくありません)。Scala コードから (読み取り可能な) Java コードを自動的に生成するツールはありますか?
java - Java 静的クラス メンバーと Scala の相互運用性
An Overview of the Scala Programming Language, Second Edition から:
上記の例では、Scala プログラムはJava で定義されたクラスであるメソッド
startsWith
およびsubstring
of を呼び出します。String
またout
、Java クラスの static フィールドにアクセスし、その (オーバーロードされた)メソッドSystem
を呼び出します。println
これは、Scala に静的クラス メンバーの概念がない場合でも可能です。実際、すべての Java クラスは Scalaでは 2 つのエンティティとして認識されます。すべての動的メンバーを含むクラスと、すべての静的メンバーを含むシングルトン オブジェクトです。
Scala のコンパニオン オブジェクトを Java バイトコードに変換することは理解していますが、反対の例 (Java から Scala へ)の上部ブロック引用符 " is seen in Scala " の太字テキストが正確に何を意味するのかはわかりません。
静的メンバーを持つ Java クラスが実際に変換されたり、Scala の 2 つのエンティティとして解釈されたりするということですか? それとも私の仮定の両方が間違っていますか?
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()
など、あらゆる種類のエラーを報告します。Seq
empty
3)パッケージオブジェクトNil
内のオブジェクトを使用しますが、ここで提案されている構文は、ですが、解決できません。scala.collection.immutable
scala.collection.immutable.package$Nil$.MODULE$
もちろんreadLine()
、varargsを使用しない方法を使用することもできますが、それは簡単すぎます。