問題タブ [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.
java - Java の自己参照ジェネリック
自己参照ジェネリックをキャストできない理由がわかりません。
Java では、自己参照ジェネリックがあります。たくさんのもの( Intent
) と、それらのもの ( ) を検索 (解決) するための戦略がありResolutionStrategy
ます。
自己参照Intent
型は以下で定義されます。コンパイル時にResolutionStrategy
、同じ意図を受け入れる のみを受け取ることができるクラスを定義したいと考えています。
したがって、解決戦略は次のとおりです。
したがって、これらの のリストを操作しているときは、Intent
それらが何であるかはあまり気にしません。ただし、ドメイン モデルで具体的なものを表す特定の型を作成したいと考えています。次に例を示します。
IdentifiableResolution
の単純で面白くない実装ですResolution
。
これまでのところすべて順調です。次に、これらの s の優れたグラフを作成し、Intent
それらを反復処理して、それぞれを a に渡して、ResolutionStrategyFactory
それらを解決するための関連する戦略を取得する計画です。ただし、OrgIntent
リストに追加するのに十分な一般的なものにキャストすることはできません!
私が宣言すべきものはありorgIntent
ますか?
アップデート
@zapl のおかげで、メソッド定義のジェネリック型パラメーターが完全なニシンであることに気付きました。
これはコンパイルされますが、おそらくIntent
、最初のジェネリック型として古いナンセンスを持つようにジェネリック化された を何らかの形で持つことができることを意味しますか?
java - ジェネリック型のジェネリック パラメーターを取得する
いくつかの背景として、私は開発中のプログラミング言語 (つまり、JVM 言語) のフレームワークに取り組んでおり、Java クラスを使用してフレームワークの一部をテストしていたため、以下のすべての奇妙なラッパーが使用されています。
それで、私の質問は、型パラメーターの境界の型変数を取得するにはどうすればよいですか? 現在、私は以下を持っています:
しかし、これは次のようなものに遭遇すると StackOverflowException で失敗します。
public class A<T extends A<T>> ...
A の型パラメーターを何度も取得しようとし続けるだけなので。型変数の型変数を取得する方法を見つけることができませんでした... getGenericDeclaration をいじってみましたが、必要なものが返されないようです。どんな助けでも大歓迎です。
c# - ネストされたオープンジェネリック型を作成する方法はありますか?
C# では、オープン ジェネリック型を簡単に作成できますtypeof(IEnumerable<>)
。オープン ジェネリックを含む型を作成する方法はありますか? 以下は機能しません: typeof(IEnumerable<IFoo<>>)
.
c# - Covariance、Contravariance、Invariance についてすべて読みましたが、コードの設計方法がわかりません。
これを投稿する前に、合理的と思われる限り、検索して読んだり勉強したりしました。同様の質問を見つけましたが、ほとんどの投稿は実際には、 「基本型のリスト」を必要とする関数呼び出しに「派生型のリスト」を渡すことに関連しています。動物の例に感謝することができ、勉強した後はよりよく理解できたように感じます.
そうは言っても、特定のユースケースで解決する方法はまだわかりません。コレクション内の「TestInterface の GenericClass」のインスタンスを集約する必要があります。タスクを達成するための最善の方法と思われるものについて、最善の努力の下にコピーして貼り付けました。
上記のコードは、次のコンパイル エラーで失敗します。
エラー CS1503: 引数 1: 'Covariance.GenericClass' から 'Covariance.GenericClass' に変換できません
エラー CS1503: 引数 1: 'Covariance.GenericClass' から 'Covariance.GenericClass' に変換できません
ヘルプ/ガイダンスまたは関連リンクは大歓迎です。繰り返しますが、これが重複した質問である場合はお詫び申し上げます。ありがとう!
c# - ジェネリック メソッドの入れ子になったジェネリック型を制約する方法
指定されたジェネリック型に基づいてデータベースからデータを返すメソッドを作成しようとしています。
インターフェイス: (この定義はコンパイルされます)
可能な具体的な実装: (この定義はコンパイルされます)
インターフェイスに基づいてジェネリック メソッドを作成しようとしています: (この定義はコンパイルされません)
エラー:
このように使用するには:
質問:
なぜこれはインターフェイス用にコンパイルされ、メソッド用にはコンパイルされないのですか?
両方が機能するか、両方が失敗することを期待していました。記事と注文の両方の具象型を定義する TOrderPosition に指定された型から、コンパイルが TOrder と TArticle の型を推測できると仮定しました。
なぜこれが起こるのか、すべてのタイプを明示的に指定しなくても問題を解決できるかどうか、またどのように解決できるかを知りたいです。
java - ジェネリック クラス型パラメーター
前提条件:
次のコードを提供するサードパーティのライブラリがあります (変更できません)。
要件:
これらのリクエストをモックする単純なクラスを構築し、いくつかの一般的な機能をモックに追加したいと考えています。
私がこれまでに持っているもの:
問題:
を使用して、このようなモック リクエストの具体的でタイプ セーフなインスタンスを構築するにはどうすればよいMockRequestBuilder
ですか?
明らかに
はSimpleRequest.class
、他の 2 つのジェネリック型に関する情報を提供しないため、機能しません。
私が見つけた2番目の方法は、使用することです
ただし、これはもちろん、メソッドが呼び出されたときSimpleRequest
に必要な ではなく、型情報なしで を返します。SimpleRequest<ConcreteType1>
build();