問題タブ [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.
oop - コンパニオンオブジェクトを持つクラスと同じ名前のクラスとオブジェクトの違いは何ですか?
Scalaクラスの「コンパニオンオブジェクト」は、クラスと同じ完全修飾名(つまり、同じパッケージ内の同じ名前)を持つシングルトンオブジェクトと見なすことができます。static
これらは、Javaのメソッドの代わりとして、クラスのすべてのインスタンスに共通のユーティリティ関数を保持するために使用されます。
ただし、ドキュメントや質問のさまざまな場所で、コンパニオンオブジェクトを同じコンパイルユニットで定義する必要があると書かれています。たとえば、それらは同じファイルで定義する必要があります。コンパニオンオブジェクトをJavaオブジェクトに定義することはできません。REPLでは、これらは同じ入力行で定義する必要があるため、次の警告メッセージが表示されます。
これは、コンパニオンオブジェクトを持つクラスと、同じ(完全に修飾された)名前を持つクラスとオブジェクトだけを区別する必要があることを意味します。この違いは何ですか?
java - Scala、JavaコレクションAPIが好きではありませんか?
asynchttpclientを使用しています。パラメータを作成するときは、java.util.MapをsetParametersメソッドに渡します。
(Java)署名は次のようになります。
実日1のもの。しかし、すごい、私はそれをScalaから呼び出そうとしているので、その署名に一致するコレクションを作成することはできません。
これが私がこれまでに作成した混乱です。
そして、これがエラーメッセージです。
十分に公平なことですが、私が特に複雑なことをしているとは思わなかったでしょうが、コンパイラの提案を試してみましょう...
なので、次のように変更します
そして、それに応じて次の素敵なエラーメッセージを受け取ります。
基本に戻りますが、最初の試みは次のとおりでした。
しかし、それは次のことを生み出しました
この行の複数のマーカー-オーバーロードされたメソッド値setParametersと代替:(com.ning.http.client.FluentStringsMap)com.ning.http.client.RequestBuilder(java.util.Map [java.lang.String、java.util。 Collection [java.lang.String]])com.ning.http.client.RequestBuilderを(java.util.Map [String、Set [String]])に適用できません
編集、__0のおかげで、これは現在機能しています。これが私の最終的なコードです:
java - Scalaの「オブジェクト」変数はJavaから見えませんか?
私はこのscalaオブジェクトを持っています
Javaコードでこれを行うと:
それは動作しますが、私が行うとき
それはしません:
java - scalaでJava基本クラスの静的メンバーにアクセスする
私は Java で書かれたいくつかのコードを持っています。新しいクラスは Scala で書く予定です。基本クラスの保護された静的メンバーへのアクセスに関して問題があります。サンプルコードは次のとおりです。
Java コード:
スカラコード:
これに関する提案はありますか?既存の基本クラスを変更せずにこれを解決するにはどうすればよいですか
java - Java で Scala シングルトン オブジェクトを使用するにはどうすればよいですか?
Java クラスで使用する必要がある Scala オブジェクトがあります。
これがScalaオブジェクトです
この Scala オブジェクトを Java で使用するにはどうすればよいですか?
これまでのところ、成功せずに次のことを試しました(コンパイルエラー):
Person.MALE()
//実際の Person オブジェクトが必要なので役に立たない文字列を返します
java - Scala のリストが予期されるときに java.util.List を使用して Java から Scala コードを呼び出す
Scala で API を作成しました。List[SomeTrait] を入力として期待し、List[OtherTrait] を返すエントリ ポイントがいくつかあります。
使用する Java プロジェクトにその Jar を含めていますが、Scala の List オブジェクトを期待するメソッドに java.util.List を渡そうとすると問題が発生しました。私はそれらが同じではなく、Java が変換を行う方法を知らないことを認識しています。では、Java 呼び出し元が Scala List を渡すことを期待せずに、これを機能させるにはどうすればよいでしょうか?
scala - トラバース可能=>Javaイテレータ
Traversableがあり、JavaIteratorにしたい。私の問題は、すべてを怠惰にやりたいということです。トラバーサブルで.toIteratorを実行すると、結果が熱心に生成され、リストにコピーされ、リスト上のイテレータが返されます。
私はここで簡単な何かが欠けていると確信しています...
これが私が何を意味するかを示す小さなテストケースです:
java - Java コードからの Scala 型エイリアスの使用
型エイリアスが scala で次のように定義されているとします。
そのようなJavaコードでエイリアスを参照できないようです(単にシンボルが見つからないと不平を言います):
静的インポートも試しました。
(より具体的には、変更できない Java リフレクション コードがあり、パラメーターの型を知る必要があり、Bar エイリアスをそれにフィードする必要があります)。
Scalaでラッパーを作成できることは知っています
しかし、多分私は他の方法を見逃していますか?
scala - scala アクセス修飾子の保証は何ですか?
私はこのコードを持つクラスを持っています:
次に、別のパッケージで、そのクラスを使用します。
生成されたバイトコードを見ると、Java はそのようなアクセス制限をサポートしていないため、アクセス修飾子の兆候はありません。ブロック 1 のようなコードを含むライブラリを作成し、そのライブラリに対してブロック 2 をコンパイルしようとするとどうなるでしょうか。情報が失われるため、コンパイラが失敗する可能性はありません。それともマニフェストのようなものに含まれていますか?
Scala 2.9.2 を使用しています。
java - Scalaと同等のJavaforeachループを変換する方法は?
以下のJavaコードをScalaに変換しようとしています:
上記のJavaコードの現在のScalaバージョンは次のとおりです。
行に対してこのエラーが発生します
単純なパターンの違法な開始
上記のコードをどのように完成させて、同じJava機能を実行し、Scalaで記述できるようにすることができますか?