問題タブ [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 に答える
192 参照

java - Scala は Java クラスを参照できない

チェス AI サーバー用の Java フレームワークがあります。Scala を使用して、チェス AI のロジックを作成する予定です。そのため、フレームワークの「AI」クラスを編集して、Scala コードを呼び出す必要があります。

Scala で Java フレームワークからクラスを参照しようとすると、次のパターンのエラーが発生します。

私が見つけた最も関連性の高いものはこれでした: scala アクセス修飾子の保証は何ですか? 、しかし、それは私をまったく助けません。

次に、これを見つけました: .java と .scala クラスの間に循環依存関係を持つことは可能ですか? Maven ソリューションをセットアップしてみますが、最終的には make を使用してコンパイルし、シェル スクリプトを使用して実行する必要があります。

ダミー クラスを作成することは、不十分な解決策のように思えます。フレームワークを編集したり、再コンパイルしたり、Scala クラスの呼び出しに関する不満を修正したりしたくありません。

なぜこれが問題なのか、私は少し混乱しています。Java 構文を使用して任意のネイティブ Java 関数を呼び出すことができますが、問題ありません。フレームワークを jar に入れてそのように参照した場合でも、なぜこれが起こるのですか?

0 投票する
3 に答える
30995 参照

java - ScalaでのJavaライブラリの使用

私はScalaを初めて使用します。今のところ基本的なコードしか書けませんが、理論を学ぶだけでなく、もっと具体的に使い始めたいと思います。

HelloWorld.javaに次のJavaコードがあるとします。

Scalaからそれを呼び出すためのコードは何でしょうか?

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

java - Scala:可能な識別子として「val」? Javaライブラリへのリンクにはそれが必要です

私のスカラ コードでは、"val" というパブリック属性を持つオブジェクトを定義する Java ライブラリを使用しています。

この属性をscalaで取得する方法はありますか?

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

scala - Java リフレクションで Scala リフレクションを使用する

DSL の一部として、Java オブジェクトで任意のユーザー指定メソッドを呼び出すために Java リフレクションを使用しているコードがたくさんあります。

ただし、実際には、これらの Java オブジェクトの多くは Scala オブジェクトであり、それらのメソッドの一部は Scala@deprecatedアノテーションでマークされています。残念ながら、Java のアノテーション メカニズムは Scala アノテーションを認識できません。Scala 2.10 までは、これらのアノテーションにアクセスする便利な方法がありませんでした (私が知っていますか?)。

ようやく 2.10 にアップグレードしました。DSL から非推奨の警告を発したいと考えています。ただし、Scala リフレクションを使用するように (少なくとも今のところ) エバリュエーター全体を書き直したくはないので、Scala リフレクションをjava.lang.reflect.Method使用して Scala メソッドが質問は非推奨ですか?それとも、その情報を取得する前に、Scala リフレクションを使用して既存のメソッド解決ロジックの多くを複製する必要がありますか?

JavaToScalaScala リフレクションに存在していたクラスのように見えます。このクラスmethodToScalaには、私が望むことを実行するメソッドが含まれていました。私が見つけることができる唯一のトレースは、Google コード プロジェクトのhereです。機能がコア リフレクションから移動されたのはなぜですか? それとも別の名前でまだ存在しますか?

編集: 問題のコードは に残っているようですscala.reflect.runtime.JavaMirrorsが、残念ながら非公開です (JavaMirrorsパブリック API の一部ですが、必要なものを提供していないものがあります)。 privatemethodAsScalaの奥深くに埋め込まれた private に至るまで、パブリック API を介した呼び出しの「パス」がある場合は me JavaMirrors。控えめに言っても、イライラします:(

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

android - Scala からの代替を使用して Java メソッドを呼び出す

putScalaからAndroid APIのクラスのメソッドを使おうとしているのですContentValuesが、Scalaにリスト要素の型を絞り込ませる方法がわかりません。例えば ​​:

... 「オーバーロードされたputメソッドと代替手段」put(String, String)put(String, Int),...解決できないという大まかなエラーが発生します。

私の直感は、おそらくリフレクションを使用する必要があると言っていますが、それを正確に行う方法がわかりません。ポインターはありますか?

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

java - Java とインターフェースするときの Scala 型/コレクション、およびその逆

Java の scala ライブラリ、または scala の Java ライブラリとインターフェースする場合、変換を実行するために「高価な」操作を実行しなければならないような、効率的にマップされない特定のタイプまたはコレクションがありますか?

たとえば、メモリに関しては、コレクションの 2 つのコピーを保持する必要がある場合がありますか?

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

java - Scala と Java の相互運用。未来の

この問題では、たとえば as をjava.util.concurrent.Future返す Scala ルーチンからの結果を期待するサードパーティの Java ライブラリを呼び出す必要があります。scala.concurrent.Future

Scala-Future を新しい Java-Future にラップしますが、ラップされた Scala-Future を中断する方法で Java-Future メソッドを実装する方法はありdef cancel(mayInterruptIfRunning: Boolean): Booleanません (そうでない場合はお知らせください)。

どうすればこの問題を解決できますか? これらは私が思いついたアプローチです:

  1. とにかくラッパーを書き、呼び出しを無視するcancel(またはスローするNotImplementedError
  2. someScalaFunctionScala または Java Future で呼び出し元によってラップされるクロージャを返すように変更します。

1. の問題は、一部のクライアントが の適切な実装に依存する可能性があることですが、cancelそれほど重要ではない可能性があります。2.本当に醜いAPIになります。

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

list - java.util.List を Scala リストに変換する方法

以下のエラーのあるこのScalaメソッドがあります。Scala リストに変換できません。

型の不一致; 見つかった:java.util.List[com.aitrich.learnware.model.domain.entity.Question]必須: scala.collection.immutable.List[com.aitrich.learnware.model.domain.entity.Question]