問題タブ [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 - Java から Scala オブジェクトのフィールドを反射的に取得するにはどうすればよいですか?
次のオブジェクトがあります。
Java リフレクションを使用して、これらの各変数の値を取得するにはどうすればよいですか? フィールドを取得する方法がわかりませんが、オブジェクトからメソッドを取得できます。これは可能ですか?
ありがとう!
java - Eclipse Java での Scala オブジェクトのネストされたクラス
Eclipse IDE を使用している場合、Java コードから Scala クラスを参照できません。問題の Scala クラスは、Scala オブジェクト構造内にネストされています。Java コードでクラスを使用しようとすると、Eclipse はバイナリー名の使用について不平を言います。
Inner
以下は、目的のクラス ( )を定義する Scala コードの例です。
Java コードでクラスを使用するInner
には、次のコードを使用します。
ただし、Eclipse (Indigo) コンパイラは、最初の行に次のメッセージを表示します。
ネストされたタイプ mypackage.Outer$Middle$Inner は、バイナリ名を使用して参照できません
興味深いことに、上記の Java コードは、NetBeans 6.9.1 で使用すると機能します。
これは Eclipse コンパイラの問題ですか? バイナリ名の使用を許可するフラグはありますか? あるいは、これは Scala の問題なのか、それとも私の使用方法の問題なのか?
java - TypeというJavaアノテーションメンバーをscalaで設定できませんか?
私はいくつかのJavaコードをscalaに移植しようとしています。コードは、というメンバーのアノテーションを使用していますtype
が、これはscalaのキーワードです。この有効なJavaメンバーをscalaでアドレス指定する方法はありますか?
これがJavaコードです
コードのこの部分type
は、キーワードであるためコンパイルされないことを除いて、scalaでも同じです。type
キーワードをエスケープする方法はありますか?
type
これは、メンバーを持つJavaクラスの問題でもあります
HasType.java
UseType.scala
java - Intellij のアイデアはドルを含むクラスを解決できません
ここで問題: コンパイルされた scala コードを含む jar があります。私が見る瓶で
Step.class Step$class.class
どちらも有効な Java クラスです。
ただし、Intellij Idea Java プロジェクトで Step$class を使用しようとすると、「シンボル Step$class を解決できません」と表示されます。しかし、コードはmavenでコンパイルされるので、問題はIDEにあると思います。
java - JavaからScalaスタンドアロンシングルトンオブジェクトにアクセスする
ScalaのfromStringメソッドにアクセスできません。javapを試しましたが、アクセスしている方法の少なくとも1つは機能するはずですが、機能しません。
App.scala
Test.java
JAVAP出力
「App.scala」からコンパイルされたjavapアプリ
javapApp$「App.scala」からコンパイル
java - Scala の Raw 型で Java インターフェイスを実装する
Scala を使用して、Sonar の拡張機能を構築しようとしています。次の Java インターフェイスを拡張する必要があります。
しかし、リソースタイプは実際には次のように定義されています:
Java raw スーパークラスを作成することで回避できることはわかっています。私はScalaのみに固執したいと思います。また、私が見逃している解決策があるかどうか、およびSonarSourceの人々に提案できる改善があるかどうかも知りたいです(生の型を使用して)。
これには問題があり、場合によってはいくつかの回避策があることを読みましたが、ここには適用されないようです(回避策、明らかに修正されたチケット、チケット2091もあります...)
java - JavaクラスのScalaゲッターとセッター
Scalaのsetters/gettersの規則に従うJavaクラスを作成したいと思います。
簡単なクラスをフォローしようとしましたが、機能しません。
しかし、scalaからアクセスしようとすると:
「valへの再割り当て」エラーメッセージが表示されます。私はこれを探しようとしましたが、すべての問題は、scalaからjavaへの逆の場所で見つかりました。
それを行う正しい方法は何ですか?
ありがとう!
scala - Sealed Trait / Object Case Class Byte Code 2.9.1 から変更。2.9.2に?
両方のディレクトリに同じソース ファイル
Java クラスで参照したい Errors.scala に次の封印された特性があります。Scala 2.9.1 では、Java から Errors.TooBig を Errors$TooBig$ として参照できましたが、2.9.2 ではコンパイルされなくなりました。
Errors.scala
JavaTest.java
2 つの異なるディレクトリ (2.9.1/2.9.2) に同じソース ファイルがあります。2.9.1 を使用してソースをコンパイルできますが、2.9.2 ではコンパイルできません。
以下は、com.abc.Errors$TooBig$ クラス ファイルの javap ダンプの差分です。
2.9.1 と 2.9.2 の両方で生成された 'Errors$TooBig$' というクラスが明確に存在することがわかります。
java - ユーザー定義の値クラスは Java ではどのように見えますか?
Haskell のnewtype
:
私が持っている質問は、それが宣言されている Scala パッケージを使用する Java コードには、値クラスがどのように見えるかということです。値クラスは Java 側からの参照クラスとして表示されますか、それとも完全に消去されますか (したがって、ラップされる型として表示されます)。言い換えれば、Java がソースレベルで関与している場合、値クラスはどの程度型安全なのでしょうか?
編集
SIP-15 ドキュメント (Daniel の回答にリンクされています) によると、上記のコードはコンパイルされません。値クラスは初期化ロジックを持つことが許可されていないためですv
。明示的に val であるかProbability
、unbox
メソッドと対応するbox
これは、値クラスが 1 つのフィールドを持つ必要があるためです。正しいコードは次のとおりです。
ただし、質問自体はそのまま有効です。