問題タブ [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 投票する
1 に答える
3112 参照

java - Java の自己参照ジェネリック

自己参照ジェネリックをキャストできない理由がわかりません。

Java では、自己参照ジェネリックがあります。たくさんのもの( Intent) と、それらのもの ( ) を検索 (解決) するための戦略がありResolutionStrategyます。

自己参照Intent型は以下で定義されます。コンパイル時にResolutionStrategy、同じ意図を受け入れる のみを受け取ることができるクラスを定義したいと考えています。

したがって、解決戦略は次のとおりです。

したがって、これらの のリストを操作しているときは、Intentそれらが何であるかはあまり気にしません。ただし、ドメイン モデルで具体的なものを表す特定の型を作成したいと考えています。次に例を示します。

IdentifiableResolutionの単純で面白くない実装ですResolution

これまでのところすべて順調です。次に、これらの s の優れたグラフを作成し、Intentそれらを反復処理して、それぞれを a に渡して、ResolutionStrategyFactoryそれらを解決するための関連する戦略を取得する計画です。ただし、OrgIntentリストに追加するのに十分な一般的なものにキャストすることはできません!

私が宣言すべきものはありorgIntentますか?

アップデート

@zapl のおかげで、メソッド定義のジェネリック型パラメーターが完全なニシンであることに気付きました。

これはコンパイルされますが、おそらくIntent、最初のジェネリック型として古いナンセンスを持つようにジェネリック化された を何らかの形で持つことができることを意味しますか?

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

java - ジェネリック型のジェネリック パラメーターを取得する

いくつかの背景として、私は開発中のプログラミング言語 (つまり、JVM 言語) のフレームワークに取り組んでおり、Java クラスを使用してフレームワークの一部をテストしていたため、以下のすべての奇妙なラッパーが使用されています。


それで、私の質問は、型パラメーターの境界の型変数を取得するにはどうすればよいですか? 現在、私は以下を持っています:

しかし、これは次のようなものに遭遇すると StackOverflowException で失敗します。

public class A<T extends A<T>> ...

A の型パラメーターを何度も取得しようとし続けるだけなので。型変数の型変数を取得する方法を見つけることができませんでした... getGenericDeclaration をいじってみましたが、必要なものが返されないようです。どんな助けでも大歓迎です。

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

c# - ネストされたオープンジェネリック型を作成する方法はありますか?

C# では、オープン ジェネリック型を簡単に作成できますtypeof(IEnumerable<>)。オープン ジェネリックを含む型を作成する方法はありますか? 以下は機能しません: typeof(IEnumerable<IFoo<>>).

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

c# - Covariance、Contravariance、Invariance についてすべて読みましたが、コードの設計方法がわかりません。

これを投稿する前に、合理的と思われる限り、検索して読んだり勉強したりしました。同様の質問を見つけましたが、ほとんどの投稿は実際には、 「基本型のリスト」を必要とする関数呼び出しに「派生型のリスト」を渡すことに関連しています。動物の例に感謝することができ、勉強した後はよりよく理解できたように感じます.

そうは言っても、特定のユースケースで解決する方法はまだわかりません。コレクション内の「TestInterface の GenericClass」のインスタンスを集約する必要があります。タスクを達成するための最善の方法と思われるものについて、最善の努力の下にコピーして貼り付けました。

上記のコードは、次のコンパイル エラーで失敗します。

エラー CS1503: 引数 1: 'Covariance.GenericClass' から 'Covariance.GenericClass' に変換できません

エラー CS1503: 引数 1: 'Covariance.GenericClass' から 'Covariance.GenericClass' に変換できません

ヘルプ/ガイダンスまたは関連リンクは大歓迎です。繰り返しますが、これが重複した質問である場合はお詫び申し上げます。ありがとう!

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

c# - ジェネリック メソッドの入れ子になったジェネリック型を制約する方法

指定されたジェネリック型に基づいてデータベースからデータを返すメソッドを作成しようとしています。

インターフェイス: (この定義はコンパイルされます)

可能な具体的な実装: (この定義はコンパイルされます)

インターフェイスに基づいてジェネリック メソッドを作成しようとしています: (この定義はコンパイルされません)

エラー:

このように使用するには:


質問:

なぜこれはインターフェイス用にコンパイルされ、メソッド用にはコンパイルされないのですか?

両方が機能するか、両方が失敗することを期待していました。記事と注文の両方の具象型を定義する TOrderPosition に指定された型から、コンパイルが TOrder と TArticle の型を推測できると仮定しました。

なぜこれが起こるのか、すべてのタイプを明示的に指定しなくても問題を解決できるかどうか、またどのように解決できるかを知りたいです。

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

java - ジェネリック クラス型パラメーター

前提条件:

次のコードを提供するサードパーティのライブラリがあります (変更できません)。


要件:

これらのリクエストをモックする単純なクラスを構築し、いくつかの一般的な機能をモックに追加したいと考えています。

私がこれまでに持っているもの:


問題:

を使用して、このようなモック リクエストの具体的でタイプ セーフなインスタンスを構築するにはどうすればよいMockRequestBuilderですか?

明らかに

SimpleRequest.class、他の 2 つのジェネリック型に関する情報を提供しないため、機能しません。

私が見つけた2番目の方法は、使用することです

ただし、これはもちろん、メソッドが呼び出されたときSimpleRequestに必要な ではなく、型情報なしで を返します。SimpleRequest<ConcreteType1>build();