タグ付けされた質問 「generics」

ジェネリックスは、.NET言語、Java、Swift、Rustなどのさまざまな言語に見られるパラメトリックポリモーフィズムの形式です。

11
無効なジェネリック型引数の最良の例外
私は現在、列挙型を処理するためのジェネリックメソッドを持つUnconstrainedMelodyのコードを書いています。 これで、「フラグ」列挙型でのみ使用することを目的とした一連のメソッドを持つ静的クラスができました。これを制約として追加することはできません...したがって、他の列挙型でも呼び出される可能性があります。その場合、例外をスローしたいのですが、どれをスローするかわかりません。 これを具体的にするために、私がこのようなものを持っている場合: // Returns a value with all bits set by any values public static T GetBitMask<T>() where T : struct, IEnumConstraint { if (!IsFlags<T>()) // This method doesn't throw { throw new ??? } // Normal work here } スローするのに最適な例外は何ですか?ArgumentException論理的に聞こえますが、これは通常の引数ではなく型引数であり、簡単に混乱する可能性があります。自分のTypeArgumentExceptionクラスを紹介する必要がありますか?使用しInvalidOperationExceptionますか?NotSupportedException?他に何か? 私はと思い、むしろそれが明確に行うには正しいことだがない限り、このために私自身の例外を作成していません。
106 c#  generics  exception 

2
Kotlinジェネリックの「*」と「Any」の違い
私は完全に違いを理解することを確認していないSomeGeneric<*>としますSomeGeneric<Any>。私*は何でも(ワイルドカード)をAny表し、すべてのオブジェクトが継承するオブジェクトを表すと思います。彼らは同じであるように見えますが、そうですか?
106 generics  kotlin 

10
実行時にクラスの属性を読み取るにはどうすればよいですか?
クラスの属性を読み取り、実行時にその値を返すジェネリックメソッドを作成しようとしています。どうすればいいですか? 注:DomainName属性はクラスDomainNameAttributeです。 [DomainName("MyTable")] Public class MyClass : DomainBase {} 私が生成しようとしているもの: //This should return "MyTable" String DomainNameValue = GetDomainName<MyClass>();


1
静的ジェネリックメソッドの呼び出し
静的なジェネリックメソッドに関する奇妙な状況に遭遇しました。これはコードです: class Foo<E> { public static <E> Foo<E> createFoo() { // ... } } class Bar<E> { private Foo<E> member; public Bar() { member = Foo.createFoo(); } } 式で型引数を指定する必要がないのはFoo.createFoo()なぜですか?これはある種の型推論ですか?それについて明示的にしたい場合、型引数をどのように指定できますか?

15
Hibernate HQL結果でタイプセーフティ警告を回避する方法
たとえば、私はそのようなクエリを持っています: Query q = sess.createQuery("from Cat cat"); List cats = q.list(); このようなものを作成しようとすると、次の警告が表示されます Type safety: The expression of type List needs unchecked conversion to conform to List<Cat> List<Cat> cats = q.list(); それを避ける方法はありますか?
105 java  generics 

9
JavaでLinkedListsの配列を作成できません…?
私は、行列の値を格納するためにの配列を使用する必要がある疎行列クラスに取り組んでいますLinkedList。配列の各要素(つまり、各LinkedList)は、行列の行を表します。また、LinkedList配列の各要素は列と格納された値を表します。 私のクラスでは、配列を次のように宣言しています。 private LinkedList<IntegerNode>[] myMatrix; そして、のコンストラクターで、以下SparseMatrixを定義しようとします。 myMatrix = new LinkedList<IntegerNode>[numRows]; 私が得ることになるエラーは のジェネリック配列を作成できませんLinkedList<IntegerNode>。 したがって、これには2つの問題があります。 私は何を間違っているのですか、そして 作成できない配列の宣言で型が受け入れられるのはなぜですか? IntegerNode私が作成したクラスです。そして、私のクラスファイルはすべて一緒にパッケージ化されています。
102 java  arrays  generics 

13
なぜJavaには具体化されたジェネリックがないことに気を付けるべきなのですか?
これは、候補者がJava言語に追加したいものとして、最近インタビューで尋ねた質問として浮上しました。Javaがジェネリックスを具体化していないことは、痛みとして一般的に認識されていますが、候補者がプッシュされたとき、候補者が実際に達成できたことを私に伝えることができませんでした。 当然、生の型はJava(および安全でないチェック)で許可されているため、ジェネリックを破壊しList<Integer>て(たとえば)実際にが含まれている可能性がありますString。タイプ情報を具体化すると、これは明らかに不可能になる可能性があります。しかし、これ以上のものがあるに違いありません! 人々が本当にやりたいことの例を投稿できますか?つまりList、実行時にaのタイプを取得できることは明らかですが、それを使用して何をしますか? public <T> void foo(List<T> l) { if (l.getGenericType() == Integer.class) { //yeah baby! err, what now? 編集:これに対する迅速な更新は、回答が主にClassパラメータとして渡される必要性に関係しているように思われるためです(たとえばEnumSet.noneOf(TimeUnit.class))。私はこれが不可能であるという線に沿って何かをもっと探していました。例えば: List<?> l1 = api.gimmeAList(); List<?> l2 = api.gimmeAnotherList(); if (l1.getGenericType().isAssignableFrom(l2.getGenericType())) { l1.addAll(l2); //why on earth would I be doing this anyway?

5
プロトコルにはSelfまたはassociatedType要件があるため、ジェネリック制約としてのみ使用できます。
私はプロトコルRequestTypeを持っていて、それは以下のようにassociatedTypeモデルを持っています。 public protocol RequestType: class { associatedtype Model var path: String { get set } } public extension RequestType { public func executeRequest(completionHandler: Result<Model, NSError> -> Void) { request.response(rootKeyPath: rootKeyPath) { [weak self] (response: Response<Model, NSError>) -> Void in completionHandler(response.result) guard let weakSelf = self else { return } if …

4
C#のジェネリックエラーのヘルプ-「タイプ 'T'はnullにできない値のタイプでなければなりません」
C#は初めてですが、次のコードが機能しない理由がわかりません。 public static Nullable<T> CoalesceMax<T>(Nullable<T> a, Nullable<T> b) where T : IComparable { if (a.HasValue && b.HasValue) return a.Value.CompareTo(b.Value) < 0 ? b : a; else if (a.HasValue) return a; else return b; } // Sample usage: public DateTime? CalculateDate(DataRow row) { DateTime? result = null; if (!(row["EXPIRATION_DATE"] is DBNull)) …
100 c#  generics 




8
C#では、メソッド内で渡されたジェネリック型をインスタンス化する方法を教えてください。
InstantiateType<T>以下のメソッド内でタイプTをインスタンス化するにはどうすればよいですか? 私はエラーを取得しています:「T」「は型パラメータ」ですが、「変数」のように使用されます。: (修正された回答のスクロールダウン) using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace TestGeneric33 { class Program { static void Main(string[] args) { Container container = new Container(); Console.WriteLine(container.InstantiateType<Customer>("Jim", "Smith")); Console.WriteLine(container.InstantiateType<Employee>("Joe", "Thompson")); Console.ReadLine(); } } public class Container { public T InstantiateType<T>(string firstName, string lastName) where T : IPerson { T …
98 c#  generics 


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.