問題タブ [gen-class]

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 投票する
3 に答える
848 参照

clojure - Clojure の :state を理解できない

:state /dos/ の意味を理解しています。Java のように、クラスにフィールドを作成します。私が理解していないのは、これのポイントは何ですか?他のクラスを拡張する Clojure によって生成されたクラスでのみ行われているようです。http://www.fatvat.co.uk/2009/05/clojure-and-robocode.htmlは一例です。私は Java を知りませんし、オブジェクト指向プログラミングにもあまり詳しくありません。誰かが私に :state のポイントを説明できますか?それは Java 相互運用性とどこに適合しますか?

どうもありがとう!

注: :state と言うときは、(:gen-class :state) を指しています。

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

clojure - Clojure の :gen-class と double 配列

Double の 2D 配列を入力として取る fn を :gen-class しようとしています。同様のトピックに関する投稿と解決策をここで既に見ましたが、まだ実用的な解決策を作成できません。

入力に"[[D"基づいて使用typeします。これは .class ファイルにうまくコンパイルされます。

ここで、別の .clj ファイルに移動すると、次のようになります。

repl から呼び出すとbar、次のエラーが表示されます。

java.lang.IllegalArgumentException: 一致するフィールドが見つかりません: クラス [[D の heat_map2

何かご意見は?

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

clojure - Clojure gen-class へのメタデータの添付

Clojure gen-class にメタデータを添付することは可能ですか?

クラスに Java アノテーションを追加する必要があるライブラリを使用するサーバーを実装しようとしています。

Chas Emerick 氏らによる近刊の本「Programming Clojure」(セクション 9.7.3) では、注釈を gen クラス メソッドに追加するのは簡単ですが、クラス レベルの注釈を追加することについては言及されていません。

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

clojure - clojure gen-class varargs コンストラクター

:constructors マップとそれに続く -init 定義では、どうすれば varargs コンストラクターを表現できますか?

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

java - Clojure から Java に LazySeq を返すときの ClassCastException

LazySeq を返す Clojure 関数があります。REPL からこの関数を実行すると、問題なく動作します。ただし、次のような Java コードから同じ関数を呼び出そうとすると、次のようになります。

次の例外が発生します。

私のgen-classは、NumberではなくLazySeqを返していると言います:

ここで何がうまくいかないのですか?

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

clojure - gen-classを使用して静的初期化子を定義するにはどうすればよいですか

JDBC ドライバーを実装する Clojure から Java クラスを生成しています。問題は、通常、JDBC ドライバーが次のDriverManagerように静的初期化子に自分自身を登録することです。

宣言には何を入れるgen-class必要があり、それを実装する関数にはどの名前を付ける必要がありますか?

ありがとう。

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

clojure - 私の単純なClojuregen-classスクリプトの何が問題になっていますか?

gen-classClojureでの使い方を学ぼうとしています。私はこの単純なスクリプトから始めました:

私がそれを実行しようとすると、私は得ます

私は何が間違っているのですか?

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

class - プロキシから「クラス」を取得するには?

を介してクラス (オブジェクトではない) を生成したいのですがproxy、クラスは後でインスタンス化されます。

私が見つけた Clojure のプロキシ メソッドの例は、最も一般的な Java 内部クラスのシナリオ、つまりインスタンスを作成するためにクラスを定義するだけの場合を主に扱っているようです。

私の場合、真のクラス (後でロードできるクラス) を定義したいと考えていますgen-class

それはまったく可能でしょうか?それともgen-class要件ですか?

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

serialization - gen-classによってClojureでシリアライズ可能なJavaクラスを生成するには?

Clojure によって生成された一連の Java オブジェクトを、Java シリアライゼーション メカニズムによってファイルにシリアライズする必要があります。

上記のように、lancelot.FilterPipe と lancelot.SegmentorPipe のインスタンスはシリアライズする必要があります。オブジェクト ストリームの書き込みは問題ありませんが、コードを再コンパイルすると、オブジェクト ストリームの読み取りが機能しないことがわかりました。

スレッド「Thread-8」での例外 java.io.InvalidClassException: lancelot.SegmentorPipe; ローカル クラスに互換性がありません: ストリーム classdesc serialVersionUID = 2583852145887230781、ローカル クラス serialVersionUID = -2255006751011717591、java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:579)、java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1601)、java.io .ObjectInputStream.readClassDesc(ObjectInputStream.java:1514) で java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1750) で java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347) で java.io.ObjectInputStream.readObject( ObjectInputStream.java:369)

serialVersionUID は static で final であるため、gen-class はインスタンス レベルの final フィールドしか生成できないようです。問題は、生成されたクラスに特定の serialVersionUID を設定できないことです。

問題に対するアドバイスはありますか?前もって感謝します。