問題タブ [nested-generics]

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 に答える
149 参照

java - パラメータとして別のジェネリック クラスを持つジェネリック クラス

私はジェネリックに関して奇妙な状況に陥っていることに気づきましたが、今のところそれは不可能のようです。単純なクラスで状況を分離してみました。私が達成しようとしていたのは、データのパケットを処理するためにハンドルをディスパッチするサービス クラスです。各ハンドラーには、パケットごとにハンドラーがあると想定されているため、パケットタイプのパラメーターがあります。ハンドラーにはいくつかのタイプがあるため、サービス クラスには Handler タイプのパラメーターもあります。そのため、ハンドラー タイプごとにいくつかのサービスが必要になります。この説明はあまり明確ではないかもしれないので、ここに私が作った例があります:

このようなことを達成する方法や提案はありますか? ありがとう

編集:これはmanoutiの回答から変更されたコードです(注:わかりやすくするために、SomePacketをPacketOneに変更しました)。私が遭遇した問題は、ServiceImpl のインスタンスを作成することです。

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

c# - このジェネリック クラスが、ジェネリック メソッドが提供する型を取得しないのはなぜですか?

次の静的ジェネリック メソッドを検討してください。

以下のように簡単に呼び出すことができ、T はButton渡された引数の a であることが暗示されます。

ただし、次のジェネリック クラスの場合は...

このコードはコンパイルされません。

代わりに、そのような型を明示的に提供する必要があります。

提供された引数から暗示されると思いTましたが、そうではないようです。

その理由は、クラスがないためだとLaa思います-クラスは実際にはLaa<Button>--何を構築すればよいかわかりませんが、それは単なる推測です。

それでも、コンパイラがこれを理解するのに十分な情報がありませんか? クラスはありませんが、提供された引数で満たされるLaaジェネリックがあります。Laa<T>

0 投票する
0 に答える
158 参照

c# - C# で、呼び出すジェネリック関数の型を動的に選択する方法

C# には、いくつかの汎用関数があります。正しく型付けされた関数を呼び出したい動的オブジェクトのリストがあります
。単純なケースでは機能しますが、テンプレートがネストされるとすぐにコンパイルされません。
ネストされたテンプレートの場合にどのように機能させるのですか?

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

java - Java - 型パラメーターを使用したクラスの初期化の問題

型パラメーターを使用してクラスを初期化する際に問題が発生しています。これは Java の型推論の欠点のようです。これを回避する方法またはこれを達成するためのより良い方法があるかどうかを知りたいです。

コンパイル時エラーは次のBusinessLogic::someLogic()とおりです:

コンストラクタ Service<ChildModel, ArrayList<ChildModel>>(Class<ChildModel>, Class<ArrayList>) は未定義です

Java 7 にコンパイルされています。

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

java - ネストされたワイルドカード ジェネリック変数の影響

次の Java コードがあるとします。

クラスのメイン メソッドで、Test次の結果を受け取る変数の正しい型はf.construct()どれですか? このタイプは、私が探しているものはA<B<...>>どこにあるかのようなものでなければなりません。...

上記の 3 行のコードは、この問題を解決するための私の試みを表しています。1 行目と 2 行目が無効です。3 つ目ですが、B型情報が失われ、キャストする必要がありa.getT()ます。

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

java - Java - インターフェイス/抽象メソッドの戻り値の型としてクラスを拡張する

戻り値の型として宣言/拡張クラスを使用してインターフェイス/抽象メソッドを作成する方法を見つけようとしていました。(たとえば、classA は interfaceA を拡張し、メソッドは ClassA オブジェクトを返す必要があります)。

今、コンパイラはそのようなことについて不平を言うことはありませんが、JVMはそのようなことを処理できないという投稿を見つけました。つまり、このメカニズムはJavaには存在しません。

そこで私は次のアイデアを思いつきましたが、それが技術的に十分に節約できるかどうかはわかりません。(例えば、ループが発生しますか)

このような使い方ができるということです。これは、外部ユーザーに拡張クラスの使用を強制するものではありませんが、少なくとも必要に応じて使用する機会を提供します。

これでコンパイラ エラーや実行時エラーは発生しなくなりましたが、これを多用すると問題が発生するのではないかと懸念しています。

これが問題を引き起こすかどうかを誰かが確認できれば幸いです。(その他のフィードバックも大歓迎です)。

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

swift - Swift のネストされたジェネリック型がプロトコルに準拠していません

Response クラスに値が含まれており、Value クラスにも Mappable プロトコルに準拠するデータが含まれています。

これで、Response オブジェクトを処理する関数ができましたが、Value オブジェクトからデータを取得しようとすると、Type "R" がプロトコルに準拠していません。

これは遊び場での私のコードです:

アップデート

私はそれを正しくやっていますか?またはこれを達成するための他の方法。ありがとう