問題タブ [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.
scala - Scala は List[Int] を java.util.List[java.lang.Integer] に変換します
Scala
を に変換するList[Int]
方法はありjava.util.List[java.lang.Integer]
ますか?
私はJava(Thrift)とインターフェースしています。
JavaConversions
をサポートしておりList --> java.util.List
、の間には暗黙的Int --> java.lang.Integer
なものがありますが、手動で変換するには追加のパスが必要であることがわかります。
scala - Scala はあいまいな Main クラスを検索します
次のような単純な scala スクリプトが必要です。
これSenseEvalAllWordsDocumentReader
は、SAX パーサーの単なるラッパーである Java 定義のクラスです。センテンスを呼び出すと、Sentence と呼ばれる別の Java 定義クラスの Java List が返されるだけです。を使用してこのコードを実行すると
次の恐ろしい出力の混乱が得られます。
これは、scala が Main という名前のクラスを探していて、それが見つからないことを意味していると思いますが、なぜこれを探すことを考えるのかわかりません。さらに、reader.sentences()
行を削除したり、電話をかけsize()
たりすると、問題はなくなります。この呼び出しにより Main という名前のクラスが存在するはずだと scala が何らかの形で推論していると推測できますが、明確な回避策は見当たりません。
考え?どんな助けでも大歓迎です。
scala - java.util.IteratorからScalaリストへ?
私は次のコードを持っています:
obj.getKeys
を返しますjava.util.Iterator<java.lang.String>
ドキュメントに従って、(インポートされた)をasScala
介して呼び出します。JavaConverers
scala.collection.Iterator
定義する
したがって、これに基づいて、これは機能するはずだと思いましたが、コンパイルエラーは次のとおりです。
typeパラメーターまたはjavaIteratorがJava文字列であり、Scala文字列のリストを作成しようとしていることは理解していますが、(おそらく単純に)暗黙の変換があると思いました。
java - Javaで実装されたメソッドでScalaトレイトを使用する
JavaからScalaトレイトに実装されたメソッドを呼び出すことはできないと思いますか、それとも方法はありますか?
私がScalaにいるとしましょう:
そしてJavaでそれを次のように使用する場合
Javaはそれを文句を言うTrait is not abstract and does not override abstract method bar() in Trait
scala - Scalaの==と.equalsの違いは何ですか?
Scalaの==
との違いは何ですか? また、いつどちらを使用するのですか?.equals()
実装はJavaと同じですか?
編集:関連する質問は、の特定のケースについて話しAnyVal
ます。より一般的なケースはAny
です。
java - Java で Scala オブジェクトに相当するものは何ですか?
Scala では、次のように記述できます。
これはコンパイラによってどのように実装されていますか? Javaから呼び出すことはできFoo.bar();
ますがnew Foo();
、Javaからエラーが発生しますcannot find symbol symbol: constructor Foo()
- JVM はネイティブでシングルトンをサポートしていますか?
- コンストラクターを持たない Java のクラスを持つことは可能ですか?
注:これは、によって出力されるコードですscalac -print
scala - ScalaのJavaConvertersとJavaConversionsの違いは何ですか?
にはscala.collection
、非常によく似た 2 つのオブジェクトJavaConversions
とがありJavaConverters
ます。
- これら 2 つのオブジェクトの違いは何ですか?
- なぜ両方が存在するのですか?
- どちらか一方を使用するのはいつですか?
scala - Java での scala vararg メソッドの使用
java から使用すると、すべての scala vararg メソッドが変数の Seq を受け入れるように見え、Java ネイティブの vararg メソッドとして使用できないのはなぜですか。これはバグですか?
たとえば、Buffer
has method def append(elems: A*): Unit
. しかし、Java では別の署名があります: void append(Seq<A>)
.
java - Java からかっこなしで Scala オブジェクトの val にアクセスできますか?
次の Scala オブジェクトがあるとします。
Scala コンパイラは、NAME
フィールドにアクセスするためのパラメーターなしのメソッドを生成するようです。ただし、Java からこのフィールドにアクセスしようとすると、このフィールドにアクセスする唯一の方法は、次のようなパラメーターなしのメソッドを使用することです。
val
Javaが期待されるJavaイディオムごとに次のようにアクセスできるようにScalaコンパイラをだます方法はありますか?
scala - Javaに匹敵するオブジェクトの慣用的な使用
java.util.Date(java.lang.Comparableを実装)を使用していて、それをうまく使用できるようにしたいと考えています。たとえば、「compareTo(other)==1」の代わりに<と>=を使用します。scala.mathのようなものを簡単に混ぜる良い方法はありますか?ボイラープレートをたくさん使わずに注文しましたか?