Javaとの相互運用性のために、初期化を実行するnullaryコンストラクターを持つクラスが必要です。このクラスのオブジェクトは、可変のJavaフィールドに似たものを持っている必要があります(つまり、オブジェクトはゲームのバックエンドを表し、ゲームの状態を維持する必要があります)。
deftypeは、nullaryコンストラクターを提供することを除いて、私がやりたいことをすべて実行します(フィールドを持つクラスを作成しているため)。
フィールドを公に読めるようにする必要はないので、次の4つの解決策を考えることができます。
gen-classを使用します。私はそれを避けることができればこれをしたくありません。
どういうわけか、deftypeの知識の外でプライベートメンバー変数をエンコードします。これはできないと言われました。
nullaryコンストラクターも作成する変更されたdeftypeを記述します。率直に言って、私はこれに十分なclojureを知りません。
deftypeによって作成されたクラスを取得し、それに新しいコンストラクターを追加します。
この最後に、Javaクラスが必要です。これは、クラスから新しいオブジェクトを作成するJavaコードにそれを渡すためです。
gen-classを使用する以外に、私が提案した(または私が考えていなかった)解決策は実行可能ですか?