問題タブ [clojure-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 投票する
2 に答える
117 参照

macros - var または local にバインドされたパラメーター マップを使用して、Java オブジェクトに多くの異なるフィールドを設定する Factor Clojure コード

実行時にリフレクションを使用せずに、Clojure から Java オブジェクトにフィールドのグループを設定したいと考えています。

このソリューション(ソリューションの1つからコピーされたもの)は、私が求めているものに近いです:

これは問題なく動作しますが、var またはローカル バインディングとして渡されたフィールドと値のマップをマクロで処理できるようにしたいと考えています (つまり、上記のようにマクロに直接渡されません)。フィールドはキーワードとして表す必要があるため、次のように動作するはずです。

set を使用してこれを行う方法がわかりません。マクロ内の特別なドット形式 (または、実行時にリフレクションを使用せずに上記のように機能するソリューション)。

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

clojure - clojure Java の相互運用性とインターフェース

Clojure からの Java インターフェイスの使用に問題があります。

私は次のクラスを持っています: public class OpenAccess

メソッドがあります: static Connection connect(String url)

ここで、Connection はインターフェースです: public interface Connection

Java では、接続をセットアップするために次のようにします。

Clojure から次のことを試しましたが、うまくいきません。

「IllegalArgumentException No matching method found: connect for class access.OpenAccess」でエラーになります

Clojure から Java インターフェイスを正しく実行する方法がわかりません。

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

clojure - Clojure deftype with Type Hints?:一致するメソッドが見つかりません。自動一致のヒントを残します

を取得してIllegalArgumentException: Can't find matching method: render, leave off hints for auto matchいますが、メソッドをオーバーロードするには型ヒントが必要です。何が足りないの...?

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

clojure - Clojure:Javaのパッケージで保護されたメソッドを呼び出すことは可能ですか?

これに関するドキュメント (またはブログ) が見つかりません。clojure からパッケージで保護されたメソッドを呼び出すことは可能ですか? 私たちは巨大な Java コード ベースを持っており、それらを中心にいくつかの clojure ライブラリの開発を開始できるかどうかを考えていました。

javaでパッケージと同じ名前空間にしてみましたが、メソッド(static)が見つかりませんでした。

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

java - Clojure 関数を宣言し、clojure-utils を使用して Java コードからすぐに実行するにはどうすればよいですか?

Clojure 関数を宣言し、clojure-utils を使用して Java コードで即座に評価したいと考えています。これを行う方法?

私が使用しているコードは次のとおりです。

文字列変数sで次の式を使用するだけで、正常に機能します。

(list* (map #(/ % 2) '(1 2 3 4 5)))

Java コンパイラは次のように表示します。

=> (1/2 1 3/2 2 5/2)

しかし、次のように、関数を宣言してからコードから呼び出しようとすると、次のようになります。

コンパイラはこれだけを表示します:

更新:私はこの構造を書きました、それはひどいですが、うまくいきます:

結果: => (1/2 1 3/2 2 5/2)

更新 2 (修正済み):

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

clojure - Clojure から Java 親メソッドを呼び出す

次の擬似コードを含む Java ライブラリがあるとします。

これをClojureから使いたい。

A のインスタンスがあり、リフレクション メソッドを使用せずに method2 を呼び出したいと考えています。

最速の方法は何ですか?