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

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

6
Javaジェネリックの型パラメーターの疑問符はどういう意味ですか?
これは、スタンフォードパーサーに付属するいくつかの例から抜粋した小さなコードスニペットです。私は約4年間Javaで開発してきましたが、このスタイルのコードが何を示すことになっているのかを非常に強く理解したことはありません。 List<? extends HasWord> wordList = toke.tokenize(); コードの詳細については心配していません。私が混乱しているのは、一般的な表現が正確に英語で伝えているはずのものです。 誰かがこれを私に説明できますか?
216 java  generics 

3
ジェネリック型またはジェネリックメソッドでパラメーター 'T'として使用するには、型が参照型である必要があります
ジェネリック医薬品についてさらに深く理解し、サポートが必要な状況になりました。件名に示すように、以下の「派生」クラスでコンパイルエラーが発生します。私はこれに似た他の多くの投稿を見ますが、私は関係を見ていません。誰かがこれを解決する方法を教えてもらえますか? using System; using System.Collections.Generic; namespace Example { public class ViewContext { ViewContext() { } } public interface IModel { } public interface IView<T> where T : IModel { ViewContext ViewContext { get; set; } } public class SomeModel : IModel { public SomeModel() { } public int ID { …
211 c#  generics 


7
Javaジェネリックにはいつ<が必要ですか?<T>の代わりにT>を拡張し、切り替えの欠点はありますか?
次の例があるとします(JUnitとHamcrestマッチャーを使用)。 Map&lt;String, Class&lt;? extends Serializable&gt;&gt; expected = null; Map&lt;String, Class&lt;java.util.Date&gt;&gt; result = null; assertThat(result, is(expected)); これは、以下のJUnit assertThatメソッドシグネチャでコンパイルされません。 public static &lt;T&gt; void assertThat(T actual, Matcher&lt;T&gt; matcher) コンパイラのエラーメッセージは次のとおりです。 Error:Error:line (102)cannot find symbol method assertThat(java.util.Map&lt;java.lang.String,java.lang.Class&lt;java.util.Date&gt;&gt;, org.hamcrest.Matcher&lt;java.util.Map&lt;java.lang.String,java.lang.Class &lt;? extends java.io.Serializable&gt;&gt;&gt;) ただし、assertThatメソッドシグネチャを次のように変更した場合: public static &lt;T&gt; void assertThat(T result, Matcher&lt;? extends T&gt; matcher) その後、コンパイルが機能します。 したがって、3つの質問: 現在のバージョンが正確にコンパイルされないのはなぜですか?ここでは共分散の問題を漠然と理解していますが、説明が必要な場合は、説明できませんでした。 …
205 java  generics  junit 

13
C#とJavaのジェネリックスとC ++のテンプレートの違いは何ですか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 6年前休業。 ロックされています。質問はトピックから外れていますが、歴史的に重要であるため、この質問とその回答はロックされています。現在、新しい回答や相互作用を受け入れていません。 私は主にJavaを使用しており、ジェネリックは比較的新しいものです。Javaが間違った決定をしたか、.NETの方が実装が優れているなど、私は読み続けています。 では、ジェネリックにおけるC ++、C#、Javaの主な違いは何ですか?それぞれの長所/短所?
203 c#  java  c++  generics  templates 

7
XMLドキュメントでジェネリッククラスとメソッドを参照する方法
xmlドキュメントを作成する場合は&lt;see cref="something"&gt;something&lt;/see&gt;、もちろん機能するを使用できます。しかし、ジェネリック型を持つクラスまたはメソッドをどのように参照しますか? public class FancyClass&lt;T&gt; { public string FancyMethod&lt;K&gt;(T value) { return "something fancy"; } } どこかでxmlドキュメントを書くつもりなら、どうすればファンシークラスを参照できますか?どうすれば参照できFancyClass&lt;string&gt;ますか?メソッドはどうですか? たとえば、別のクラスで、のインスタンスを返すことをユーザーに通知したかったのFancyClass&lt;int&gt;です。どうすればそのためにcrefを見ることができますか?

11
ジェネリッククラスの静的メソッド?
Javaでは、次のようなものにしたいと思います: class Clazz&lt;T&gt; { static void doIt(T object) { // ... } } しかし、私は得る 非静的型Tへの静的参照を作成できません 私は基本的な用途以外のジェネリックを理解していないので、それをあまり理解できません。それは私が主題についてインターネットで多くの情報を見つけることができなかったことを助けません。 同様の方法で、そのような使用が可能かどうかを誰かが明確にできますか?また、なぜ私の最初の試みは失敗したのですか?

23
ジェネリックTryParse
'TryParse'を使用して文字列が指定されたタイプかどうかを確認する汎用拡張を作成しようとしています。 public static bool Is&lt;T&gt;(this string input) { T notUsed; return T.TryParse(input, out notUsed); } シンボル「TryParse」を解決できないため、これはコンパイルされません 私が理解しているように、「TryParse」はどのインターフェースにも含まれていません。 これはまったく可能ですか? 更新: 以下の答えを使用して私は思いつきました: public static bool Is&lt;T&gt;(this string input) { try { TypeDescriptor.GetConverter(typeof(T)).ConvertFromString(input); } catch { return false; } return true; } それは非常にうまく機能しますが、そのように例外を使用することは私には正しくないと思います。 Update2: ジェネリックを使用するのではなく、タイプを渡すように変更されました。 public static bool Is(this string input, Type targetType) …
196 c#  generics  tryparse 

10
リスト、リスト<?>、リスト<T>、リスト<E>、リスト<オブジェクト>の違い
どのような違いがあるList、List&lt;?&gt;、List&lt;T&gt;、List&lt;E&gt;、とList&lt;Object&gt;? 1.リスト List:は生の型なので、ではありませんtypesafe。キャストが悪い場合にのみランタイムエラーが発生します。キャストが悪いときにコンパイル時エラーが欲しい。使用はお勧めしません。 2.リスト&lt;?&gt; List&lt;?&gt;無制限のワイルドカードです。しかし、それが何のためにあるのかわかりませんか?List&lt;?&gt;問題なく印刷できます: public static void test(List&lt;?&gt; list){ System.out.println(list); // Works } にアイテムを追加できないのはなぜList&lt;?&gt;ですか? public static void test(List&lt;?&gt; list){ list.add(new Long(2)); // Error list.add("2"); // Error System.out.println(list); } 3.リスト&lt;T&gt; public static void test(List&lt;T&gt; list){ // T cannot be resolved System.out.println(list); } この構文が理解できません。私はこのようなものを見ました、そしてそれはうまくいきます: public &lt;T&gt; T[] toArray(T[] a){ return a; …
194 java  generics 

8
Java:ジェネリック型からクラスリテラルを取得するにはどうすればよいですか?
通常、次のようにクラスリテラルを使用する人を見てきました。 Class&lt;Foo&gt; cls = Foo.class; しかし、タイプが総称型である場合はどうでしょうか(例:リスト)。これは正常に機能しますが、リストをパラメーター化する必要があるため、警告が表示されます。 Class&lt;List&gt; cls = List.class では、なぜ追加しないの&lt;?&gt;ですか?まあ、これは型の不一致エラーを引き起こします: Class&lt;List&lt;?&gt;&gt; cls = List.class 私はこのようなものがうまくいくと思っていましたが、これは単なる旧式の構文エラーです: Class&lt;List&lt;Foo&gt;&gt; cls = List&lt;Foo&gt;.class Class&lt;List&lt;Foo&gt;&gt;クラスリテラルを使用するなど、静的に取得するにはどうすればよいですか? 私は可能性が使用し@SuppressWarnings("unchecked")、最初の例では、リストの非パラメータ化の使用によって引き起こされた警告を取り除くためにClass&lt;List&gt; cls = List.class、私はむしろないと思います。 助言がありますか?
193 java  generics  class  literals 

13
配列とリストのパフォーマンス
頻繁に繰り返す必要がある整数のリスト/配列が必要だとします。つまり、非常に頻繁です。理由はさまざまですが、大量処理の最も内側のループの中心にあると言います。 一般に、サイズが柔軟なため、リスト(リスト)の使用を選択します。その上、msdnのドキュメントでは、リストは内部で配列を使用しており、同じくらい高速に実行する必要があると主張しています(Reflectorで簡単に確認すると、これが確認されます)。それでも、多少のオーバーヘッドが伴います。 これを実際に測定した人はいますか?リストを6M回繰り返すと、配列と同じ時間がかかりますか?



6
インスタンス化されたSystem.Typeをジェネリッククラスの型パラメーターとして渡す
タイトルはあいまいです。私が知りたいのは、これが可能かどうかです: string typeName = &lt;read type name from somwhere&gt;; Type myType = Type.GetType(typeName); MyGenericClass&lt;myType&gt; myGenericClass = new MyGenericClass&lt;myType&gt;(); 明らかに、MyGenericClassは次のように記述されます。 public class MyGenericClass&lt;T&gt; 現在、コンパイラーは「タイプまたはネームスペース「myType」が見つからなかった」と不平を言っています。」これを行う方法がなければなりません。
182 c#  .net  generics 

4
Java Genericメソッドを静的にする方法は?
以下は、Javaジェネリッククラスを作成して配列に単一の項目を追加する方法のスニペットです。appendToArrayを静的メソッドにするにはどうすればよいですか。メソッドシグネチャにstaticを追加すると、コンパイルエラーが発生します。 public class ArrayUtils&lt;E&gt; { public E[] appendToArray(E[] array, E item) { E[] result = (E[])new Object[array.length+1]; result[array.length] = item; return result; } }
172 java  generics 

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