問題タブ [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.
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) を指しています。
clojure - Clojure の :gen-class と double 配列
Double の 2D 配列を入力として取る fn を :gen-class しようとしています。同様のトピックに関する投稿と解決策をここで既に見ましたが、まだ実用的な解決策を作成できません。
入力に"[[D"
基づいて使用type
します。これは .class ファイルにうまくコンパイルされます。
ここで、別の .clj ファイルに移動すると、次のようになります。
repl から呼び出すとbar
、次のエラーが表示されます。
java.lang.IllegalArgumentException: 一致するフィールドが見つかりません: クラス [[D の heat_map2
何かご意見は?
clojure - Clojure gen-class へのメタデータの添付
Clojure gen-class にメタデータを添付することは可能ですか?
クラスに Java アノテーションを追加する必要があるライブラリを使用するサーバーを実装しようとしています。
Chas Emerick 氏らによる近刊の本「Programming Clojure」(セクション 9.7.3) では、注釈を gen クラス メソッドに追加するのは簡単ですが、クラス レベルの注釈を追加することについては言及されていません。
clojure - clojure gen-class varargs コンストラクター
:constructors マップとそれに続く -init 定義では、どうすれば varargs コンストラクターを表現できますか?
java - Clojure から Java に LazySeq を返すときの ClassCastException
LazySeq を返す Clojure 関数があります。REPL からこの関数を実行すると、問題なく動作します。ただし、次のような Java コードから同じ関数を呼び出そうとすると、次のようになります。
次の例外が発生します。
私のgen-classは、NumberではなくLazySeqを返していると言います:
ここで何がうまくいかないのですか?
clojure - gen-classを使用して静的初期化子を定義するにはどうすればよいですか
JDBC ドライバーを実装する Clojure から Java クラスを生成しています。問題は、通常、JDBC ドライバーが次のDriverManager
ように静的初期化子に自分自身を登録することです。
宣言には何を入れるgen-class
必要があり、それを実装する関数にはどの名前を付ける必要がありますか?
ありがとう。
clojure - 私の単純なClojuregen-classスクリプトの何が問題になっていますか?
gen-class
Clojureでの使い方を学ぼうとしています。私はこの単純なスクリプトから始めました:
私がそれを実行しようとすると、私は得ます
私は何が間違っているのですか?
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 を設定できないことです。
問題に対するアドバイスはありますか?前もって感謝します。