Questions tagged «generics»

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

6
Java泛型的类型参数中的问号是什么意思?
这是一小段代码,摘自Stanford Parser随附的一些示例。我从事Java开发已有大约4年的时间,但是对于这种代码应该指出的内容却从未有过很深刻的了解。 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) 然后编译工作。 所以三个问题: 为什么当前版本完全不编译?尽管我在这里含糊地理解了协方差问题,但如果必须的话,我当然无法解释。 …
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;。我该如何为此做一个见识参考资料呢?

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; } 它工作得很好,但是我认为以这种方式使用异常对我来说不合适。 更新2: 修改为通过类型而不是使用泛型: public static bool Is(this string input, …
196 c#  generics  tryparse 

10
List,List <?>,List <T>,List <E>和List <Object>之间的区别
之间有什么区别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; 但是,如果类型是通用类型,例如List,该怎么办?这可以正常工作,但由于应将List参数化,因此发出警告: 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
阵列与列表的性能
假设您需要一个整数列表/数组,并且需要经常迭代,而我的意思是非常频繁。原因可能会有所不同,但是说这是大批量处理最内层循环的核心。 通常,由于大小的灵活性,人们会选择使用列表(List)。最重要的是,msdn文档声称Lists在内部使用数组,并且执行速度应该一样快(对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”。”必须有一种方法可以做到这一点。
181 c#  .net  generics 

4
如何使Java泛型方法静态?
以下是有关如何使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 

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.