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

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

6
オブジェクトがパラメータタイプのインスタンスであるかどうかをテストします
オブジェクトがジェネリック型のインスタンスであるかどうかを判断する方法はありますか? public <T> test(Object obj) { if (obj instanceof T) { ... } } それは明らかに機能しません。代替手段はありますか?Javaリフレクションを使用してクラスをインスタンス化し、それがジェネリック型であることを確認したいのと同じですT。

15
C#でIListを並べ替える
それで、今日、私は興味深い問題に遭遇しました。IListを返すWCFWebサービスがあります。並べ替えるまでは大したことではありません。 IListインターフェイスにはsortメソッドが組み込まれていないことがわかりました。 私はArrayList.Adapter(list).Sort(new MyComparer())問題を解決するためにこの方法を使用することになりましたが、それは私には少し「ゲットー」のように見えました。 私は拡張メソッドを作成し、IListから継承し、独自のSort()メソッドを実装し、リストにキャストすることを楽しみましたが、これらはどれも過度にエレガントに見えませんでした。 だから私の質問は、誰かがIListをソートするためのエレガントな解決策を持っていますか?
86 c#  generics  sorting  ilist 


14
C#で、List <string>オブジェクトをList <object>変数に格納できないのはなぜですか
ListオブジェクトをC#のList変数に格納することはできず、そのように明示的にキャストすることもできないようです。 List&lt;string&gt; sl = new List&lt;string&gt;(); List&lt;object&gt; ol; ol = sl; 結果は、型System.Collections.Generic.List&lt;string&gt;を暗黙的に変換できませんSystem.Collections.Generic.List&lt;object&gt; その後... List&lt;string&gt; sl = new List&lt;string&gt;(); List&lt;object&gt; ol; ol = (List&lt;object&gt;)sl; 結果はタイプSystem.Collections.Generic.List&lt;string&gt;をに変換できませんSystem.Collections.Generic.List&lt;object&gt; もちろん、文字列リストからすべてを引き出して一度に1つずつ戻すことでそれを行うことができますが、それはかなり複雑な解決策です。


3
Java8の例外型推論の固有の機能
このサイトで別の答えのコードを書いているときに、私はこの特異性に出くわしました。 static void testSneaky() { final Exception e = new Exception(); sneakyThrow(e); //no problems here nonSneakyThrow(e); //ERRROR: Unhandled exception: java.lang.Exception } @SuppressWarnings("unchecked") static &lt;T extends Throwable&gt; void sneakyThrow(Throwable t) throws T { throw (T) t; } static &lt;T extends Throwable&gt; void nonSneakyThrow(T t) throws T { throw t; } まず、sneakyThrowコンパイラーにとって呼び出しがOKである理由がかなり混乱しています。Tチェックされていない例外タイプのどこにも言及がない場合、どのようなタイプが推測されましたか? …

10
Hibernate Query.list()をList <Type>にキャストする「適切な」方法は何ですか?
私はHibernateの初心者であり、特定のフィルターに一致するオブジェクトのリストを返す簡単なメソッドを作成しています。List&lt;Foo&gt;自然な戻り値の型のようでした。 私が何をするにしても、醜いものを使わない限り、コンパイラを幸せにすることはできないようです@SuppressWarnings。 import java.util.List; import org.hibernate.Query; import org.hibernate.Session; public class Foo { public Session acquireSession() { // All DB opening, connection etc. removed, // since the problem is in compilation, not at runtime. return null; } @SuppressWarnings("unchecked") /* &lt;----- */ public List&lt;Foo&gt; activeObjects() { Session s = acquireSession(); Query q …

7
.NETには組み込みのEventArgs <T>がありますか?
単一の引数を持つイベント引数の汎用EventArgsクラスを作成する準備をしています。 public class EventArg&lt;T&gt; : EventArgs { // Property variable private readonly T p_EventData; // Constructor public EventArg(T data) { p_EventData = data; } // Property for EventArgs argument public T Data { get { return p_EventData; } } } その前に、C#には同じ機能が言語に組み込まれていますか?C#2.0が出たときにそのようなものに出くわしたことを覚えているようですが、今はそれを見つけることができません。 別の言い方をすれば、独自の汎用EventArgsクラスを作成する必要がありますか、それともC#が提供しますか?ご協力いただきありがとうございます。
84 c#  generics  eventargs 

6
ジェネリッククラスの静的メンバーは特定のインスタンスに関連付けられていますか?
これは、実際の質問というよりもドキュメントです。これはまだSOで対処されていないようです(私がそれを見逃していない限り)ので、ここに行きます: 静的メンバーを含むジェネリッククラスを想像してみてください。 class Foo&lt;T&gt; { public static int member; } 特定のクラスごとにメンバーの新しいインスタンスがありますか、それともすべてのFooタイプのクラスに1つのインスタンスしかありませんか? 次のようなコードで簡単に確認できます。 Foo&lt;int&gt;.member = 1; Foo&lt;string&gt;.member = 2; Console.WriteLine (Foo&lt;int&gt;.member); 結果はどうなりますか?また、この動作はどこに文書化されていますか?
84 c#  .net  generics  static 

6
C#でジェネリックメソッドを作成する
私はたくさんの同様のメソッドを一般的なメソッドに結合しようとしています。クエリ文字列の値を返すメソッドがいくつかあります。クエリ文字列が存在しないか、正しい形式でない場合はnullを返します。すべての型がネイティブにnull許容であれば、これは十分に簡単ですが、整数と日付にはnull許容のジェネリック型を使用する必要があります。 これが私が今持っているものです。ただし、数値が無効な場合は0が返されます。残念ながら、これは私のシナリオでは有効な値です。誰かが私を助けることができますか?ありがとう! public static T GetQueryString&lt;T&gt;(string key) where T : IConvertible { T result = default(T); if (String.IsNullOrEmpty(HttpContext.Current.Request.QueryString[key]) == false) { string value = HttpContext.Current.Request.QueryString[key]; try { result = (T)Convert.ChangeType(value, typeof(T)); } catch { //Could not convert. Pass back default value... result = default(T); } } return result; }
84 c#  generics 

6
C#でIntをジェネリック列挙型にキャストする
C#のCast int to enumに似ていますが、私の列挙型はGenericTypeパラメーターです。これを処理するための最良の方法は何ですか? 例: private T ConvertEnum&lt;T&gt;(int i) where T : struct, IConvertible { return (T)i; } コンパイラエラーを生成します Cannot convert type 'int' to 'T' 完全なコードは次のとおりです。ここで、valueにはintまたはnullを含めることができます。 private int? TryParseInt(string value) { var i = 0; if (!int.TryParse(value, out i)) { return null; } return i; } private T? TryParseEnum&lt;T&gt;(string value) …
84 c#  generics  casting  enums 

1
ゲットプット原理の説明
私はこのget-putの原則を知るようになったという点で、O'Reillyの本を読みました。 構造体から値extendsのみを取得する場合は、ワイルドカードを使用します。 構造体に値superのみを入力する場合は、ワイルドカードを使用してください。 また、構造体との間で取得および配置する場合は、ワイルドカードを使用しないでください。 例外は次のとおりです。 すべての参照型に属するextends値を除いて、ワイルドカードで宣言された型に何も入れることはできませんnull。 すべての参照型のスーパー型であるsupertypeの値を除いて、ワイルドカードで宣言された型からは何も取得できませんObject。 誰かが私がこのルールを深く探求するのを手伝ってくれる?可能であれば、階層的に配置してください。
83 java  generics 

11
C#ジェネリックスとタイプチェック
IList&lt;T&gt;パラメータとしてを使用するメソッドがあります。そのTオブジェクトのタイプを確認し、それに基づいて何かを行う必要があります。T値を使おうとしましたが、コンパイラが許可していません。私の解決策は次のとおりです。 private static string BuildClause&lt;T&gt;(IList&lt;T&gt; clause) { if (clause.Count &gt; 0) { if (clause[0] is int || clause[0] is decimal) { //do something } else if (clause[0] is String) { //do something else } else if (...) //etc for all the types else { throw new ApplicationException("Invalid type"); } } …
83 c#  generics  types 

6
Springでジェネリック型<T>のBeanを自動配線する方法は?
クラスItem&lt;T&gt;で自動配線する必要があるBeanがあり@Configurationます。 @Configuration public class AppConfig { @Bean public Item&lt;String&gt; stringItem() { return new StringItem(); } @Bean public Item&lt;Integer&gt; integerItem() { return new IntegerItem(); } } しかし、しようとすると@Autowire Item&lt;String&gt;、次の例外が発生します。 "No qualifying bean of type [Item] is defined: expected single matching bean but found 2: stringItem, integerItem" Item&lt;T&gt;Springでジェネリック型をAutowireするにはどうすればよいですか?

5
Java:制限付きワイルドカードまたは制限付き型パラメーター?
最近、私はこの記事を読みました:http: //download.oracle.com/javase/tutorial/extra/generics/wildcards.html 私の質問は、次のようなメソッドを作成する代わりに、次のようになります。 public void drawAll(List&lt;? extends Shape&gt; shapes){ for (Shape s: shapes) { s.draw(this); } } このようなメソッドを作成できますが、正常に機能します。 public &lt;T extends Shape&gt; void drawAll(List&lt;T&gt; shapes){ for (Shape s: shapes) { s.draw(this); } } どちらの方法を使用すればよいですか?この場合、ワイルドカードは役に立ちますか?

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