問題タブ [dynamic-class-creation]
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 リフレクションを使用してインスタンス化するクラスを決定する
Message スーパークラスがあり、WeddingMessage、GreetingMessage、FarewellMessage、Birthday Message などのさまざまな Message サブクラスがあります。
Message スーパークラスにはコンストラクターがあります。
メッセージ サブクラスはすべて異なるコンストラクターを持ちますが、すべてスーパークラスを呼び出し、そこで引数として messageType を渡します。たとえば、次のようになります。
作成される messageType は、ユーザーから渡された引数によって決定されます。たとえば、ユーザーが「John 12 歳の誕生日」を挿入すると、パラメータ John と 12 を使用して BirthdayMessage が作成されます。
一連の if/else ステートメントや switch ケースを使用する代わりに、次のような形式で-
等
リフレクションを使用して、作成するメッセージ クラスのタイプを決定するにはどうすればよいですか。私の現在の考えは、File クラスを使用して、メッセージ サブクラスを含むパッケージ内のすべてのファイルを取得することです。次に、リフレクションを使用して各コンストラクター パラメーターの型を取得し、ユーザー入力によって指定されたパラメーターと一致するかどうかを確認します。次に、これらの一致するクラスのインスタンスをランダム パラメーターで作成します。作成されると、サブクラスはそのスーパークラス コンストラクターをその messageType で呼び出します。次に、messageType 変数がユーザー入力と一致するかどうかを確認できます。
したがって、ユーザーが 'birthday john 23' と入力すると、パラメーターとして文字列と int を取り、フィールド messageType (Message から継承) を持つパッケージ内のすべてのコンストラクターが見つかります。次に、そのクラスのインスタンスを作成し、messageType がユーザー入力の最初の単語 (この場合は誕生日) に対して == であるかどうかを確認します。そうであれば、ユーザーが指定したパラメーターを使用してそのクラスのインスタンスを作成します。
リフレクションでこれを行うより良い方法はありますか?
c# - 文字列パラメーターに基づく動的クラス
私はこれを持っています:
ここで、文字列 prpClass は「Blah」または「Doh」にすることができます。
文字列prpClassが保持するものに基づいて、ListタイプをクラスBlahまたはDohにしたいと思います。
どうすればこれを達成できますか?
編集:
java - 実行時に asm によって実装されたクラスにスーパークラスを割り当てることはできません
内部インターフェイスで構成される Java クラスがあり、実行時に asm バイトコード インジェクションを使用して実装クラスを実装する予定です。
私の asm コードは正しいと確信していますが、クラスを定義して Class.forName("my.example.X$XImpl") を呼び出した後、次のエラーが発生します。
私の推測では、クラス Y は実行時にまだ利用できないのでしょうか? 私にはわかりません..どんな助けもいただければ幸いです!
EDIT:XImplをロードする方法は非常に簡単です:
私のバイトコードとクラスローディングメソッドが正しいと確信している理由は、他のクラスを拡張せずに実装クラスを定義するとうまくいくからです
java - 列挙型に基づいてオブジェクトを作成する Java の方法
私のクラスは次のようなものです:
各サブクラス (id + クラス) の列挙型があります。
次に、次のように使用しました。
それは正常に動作しますが、これが整数 id に基づいてデータを作成する Java-ist の方法であるかどうか疑問に思っていますか? 探すべき悪いことはありますか?
長い if-else 条件なしで渡されるクラスを X タイプに強制する方法はありますか? 多数のサブクラスがある場合を考えてください。
なぜ整数 ID に取り組みたいのですか?
私はある種のパーサーを書いているので、どこかから取得した整数 ID を適切なオブジェクトに変換する必要があります。
javascript - Viewmodel 属性 'links' でモデル タイプが見つかりません
で次のコードを実行しようとすると、クラスで指定されているか、entityName で指定されている場合にshow()
、属性がモデルを見つけられないという例外が発生します。links
コードの一部にコメントを付けるとlinks
、残りは問題なく動作します。
例外の興味深い部分は次のとおりです。
ソース コードに飛び込むmyapp.model.film.Film
と、クラスかどうかをチェックする if ステートメントが失敗することがわかります。
python - 辞書のリストを反復し、Python でオブジェクトに変換する
次のような辞書のリストがあるとします。
そして、私は次のようないくつかのオブジェクトを持っています:
リストを繰り返し処理し、条件に応じて、次のように言いましょう。
私は多くのクラスを持っているかもしれません。適切なオブジェクトを選択するための非常に長い if/elif を回避するにはどうすればよいですか? これを達成する動的な方法はありますか?さらに良いことに、すべてのタイプのオブジェクトを明示的に選択して設定しないことで、賢くなりすぎているのでしょうか?
各オブジェクトには設定する属性が 10 個以上ある場合があり、この if/elif ブロックは非常に長く、読み取り/保守が難しくなっています。
アップデート:
おそらく答えは、私がこれについて完全に間違っているということです。私の当初の目標は、このネストされた辞書があり、各辞書要素を特定の方法で「クリーンアップ」/強化したいということです。'type'=='type_a' の要素の場合、いくつかの新しいキーを追加したいと考えています。'type'=='type_b' の場合、1 つまたは 2 つのキーの名前を編集したいかもしれません。'type'=='type_c' の場合、特定のキーの値を編集したいなどです。30、40、おそらく 50 の異なるタイプが存在する可能性があります。したがって、「乱雑な」ネストされた dict から始めて、「きれいな」ものを取り戻し、自分のやり方を変更しました。
私の最初のアプローチは、タイプごとにクラスを用意することでした。@property
そして、各クラスは、特定の属性を特定の方法で設定する独自の装飾されたメソッドを持つことができます。そして、それらはすべて、すべての属性をキーとして持つ辞書を返すメソッドを持つ同じ基本クラスから継承します。
python - 動的クラスは効果がありません - 楕円
私はkivyから始めていますが、解決できない障害にすでにぶつかっています。私が望むのは、kv ファイルで動的な Ellipse クラスを作成し、それをウィジェットのキャンバスに投影することだけです。
私が見ているのは、楕円として認識されていますが、どの属性も引き継がれていないことです (特にサイズ)。
以下にコードと、表示されているもののスクリーンショットを示します。1 つの Ellipse の余分なサイズは、問題をより視覚的に表示するために作成されたものであることに注意してください。それがなければ、3 つの非常に大きな円が見えます。
私はubuntu 16.04でこれをやっています。それが重要な場合
私を助けてくれてありがとう:)
main.py
スキーム.kv