Questions tagged «generics»

泛型是在多种语言中发现的参数多态形式,包括.NET语言,Java,Swift和Rust。

25
在运行时获取类的通用类型
我该如何实现? public class GenericClass<T> { public Type getMyType() { //How do I return the type of T? } } 到目前为止,我尝试过的所有操作始终返回类型,Object而不是所使用的特定类型。

18
List <T>或IList <T> [关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 7个月前关闭。 谁能向我解释为什么我要在C#中使用IList over List? 相关问题:为什么认为暴露不好List&lt;T&gt;
495 c#  list  generics 


26
迭代时如何从通用列表中删除元素?
我正在寻找一种更好的模式来处理元素列表,每个元素都需要处理,然后根据结果从列表中删除。 您不能.Remove(element)在内使用foreach (var element in X)(因为这会导致Collection was modified; enumeration operation may not execute.异常)...您也不能使用for (int i = 0; i &lt; elements.Count(); i++),.RemoveAt(i)因为这会干扰您相对于的当前位置i。 有没有一种优雅的方法可以做到这一点?
450 c#  list  loops  generics  key-value 

7
Java 7中的菱形运算符(<>)有什么意义?
Java 7中的菱形运算符允许如下代码: List&lt;String&gt; list = new LinkedList&lt;&gt;(); 但是,在Java 5/6中,我可以简单地编写: List&lt;String&gt; list = new LinkedList(); 我对类型擦除的理解是这些完全相同。(无论如何,泛型都会在运行时删除)。 为什么要打扰钻石呢?它允许哪些新功能/类型安全?如果它没有产生任何新功能,为什么他们将其称为功能?我对这个概念的理解有缺陷吗?


9
List <T>顺序按字母顺序
我在Framework 3.5上使用C#。我希望快速对Generic进行排序List&lt;T&gt;。就本例而言,假设我有一个Person具有姓氏属性的类型的列表。如何使用Lambda表达式对该列表进行排序? List&lt;Person&gt; people = PopulateList(); people.OrderBy(???? =&gt; ?????)
441 c#  generics  list  lambda  sorting 

13
Google Gson-反序列化list <class>对象?(通用类型)
我想通过Google Gson传输列表对象,但是我不知道如何反序列化泛型类型。 在查看此内容后我尝试了什么(BalusC的答案): MyClass mc = new Gson().fromJson(result, new List&lt;MyClass&gt;(){}.getClass()); 但是然后我在日食中遇到了一个错误,说“新的List(){}类型必须实现继承的抽象方法...”,如果我使用快速修复方法,则会得到20个以上的方法存根的怪物。 我很确定有一个更简单的解决方案,但是我似乎找不到它! 编辑: 我现在有 Type listType = new TypeToken&lt;List&lt;MyClass&gt;&gt;() { }.getType(); MyClass mc = new Gson().fromJson(result, listType); 但是,在“ fromJson”行中确实得到以下异常: java.lang.NullPointerException at org.apache.harmony.luni.lang.reflect.ListOfTypes.length(ListOfTypes.java:47) at org.apache.harmony.luni.lang.reflect.ImplForType.toString(ImplForType.java:83) at java.lang.StringBuilder.append(StringBuilder.java:203) at com.google.gson.JsonDeserializerExceptionWrapper.deserialize(JsonDeserializerExceptionWrapper.java:56) at com.google.gson.JsonDeserializationVisitor.invokeCustomDeserializer(JsonDeserializationVisitor.java:88) at com.google.gson.JsonDeserializationVisitor.visitUsingCustomHandler(JsonDeserializationVisitor.java:76) at com.google.gson.ObjectNavigator.accept(ObjectNavigator.java:106) at com.google.gson.JsonDeserializationContextDefault.fromJsonArray(JsonDeserializationContextDefault.java:64) at com.google.gson.JsonDeserializationContextDefault.deserialize(JsonDeserializationContextDefault.java:49) at com.google.gson.Gson.fromJson(Gson.java:568) …
440 java  json  generics  gson 


22
匿名类的通用列表
在C#3.0中,您可以使用以下语法创建匿名类 var o = new { Id = 1, Name = "Foo" }; 有没有一种方法可以将这些匿名类添加到通用列表中? 例: var o = new { Id = 1, Name = "Foo" }; var o1 = new { Id = 2, Name = "Bar" }; List&lt;var&gt; list = new List&lt;var&gt;(); list.Add(o); list.Add(o1); 另一个例子: List&lt;var&gt; list = …


14
将参数传递给模板类型的C#通用new()
添加到列表中时,我正在尝试通过其构造函数创建类型T的新对象。 我收到一个编译错误:错误消息是: 'T':创建变量实例时无法提供参数 但是我的类确实有一个构造函数参数!我该如何进行这项工作? public static string GetAllItems&lt;T&gt;(...) where T : new() { ... List&lt;T&gt; tabListItems = new List&lt;T&gt;(); foreach (ListItem listItem in listCollection) { tabListItems.Add(new T(listItem)); // error here. } ... }



7
方法具有与另一种方法相同的擦除
为什么在同一类中使用以下两种方法是不合法的? class Test{ void add(Set&lt;Integer&gt; ii){} void add(Set&lt;String&gt; ss){} } 我得到了 compilation error 方法add(Set)与类型Test中的另一个方法具有相同的擦除add(Set)。 虽然我可以解决它,但我想知道为什么javac不喜欢这样。 我可以看到,在很多情况下,这两种方法的逻辑非常相似,可以用一个方法代替 public void add(Set&lt;?&gt; set){} 方法,但并非总是如此。 如果您想让两个带有constructors这些参数,这会特别令人讨厌,因为那样您就不能只更改其中一个的名称constructors。
381 java  generics 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.