Questions tagged «generics»

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

3
使用LINQ选择字典<T1,T2>
我已经使用“ select”关键字和扩展方法来返回IEnumerable&lt;T&gt;LINQ,但是我需要返回一个泛型Dictionary&lt;T1, T2&gt;并且无法弄清楚。我从使用类似于以下形式的内容中学到了以下示例: IEnumerable&lt;T&gt; coll = from x in y select new SomeClass{ prop1 = value1, prop2 = value2 }; 我也对扩展方法做了同样的事情。我假设因为Dictionary&lt;T1, T2&gt;可以重复进行中的项, 因为KeyValuePair&lt;T1, T2&gt;我可以将上面示例中的“ SomeClass”替换为“ new KeyValuePair&lt;T1, T2&gt; { ...”,但这没有用(键和值被标记为只读,因此我无法编译此代码)。 这可能吗,还是我需要分多个步骤进行? 谢谢。
171 c#  .net  linq  generics 

2
通用返回类型上限-接口与类-出乎意料的有效代码
这是来自第三方库API的真实示例,但已简化。 与Oracle JDK 8u72一起编译 考虑以下两种方法: &lt;X extends CharSequence&gt; X getCharSequence() { return (X) "hello"; } &lt;X extends String&gt; X getString() { return (X) "hello"; } 两者都报告“未经检查的演员表”警告-我明白原因。让我感到困惑的是为什么我可以打电话 Integer x = getCharSequence(); 它可以编译吗?编译器应该知道Integer没有实现CharSequence。致电 Integer y = getString(); 给出错误(按预期) incompatible types: inference variable X has incompatible upper bounds java.lang.Integer,java.lang.String 有人可以解释为什么将这种行为视为有效吗?有什么用? 客户端不知道此调用是不安全的-客户端的代码在编译时不会发出警告。为何编译器不会对此发出警告/发出错误? 此外,它与此示例有何不同: &lt;X …
171 java  generics  java-8 

7
Mockito.any()通过泛型接口
是否可以通过泛型传递接口的类型? 界面: public interface AsyncCallback&lt;T&gt; 在我的测试方法中: Mockito.any(AsyncCallback.class) 把&lt;ResponseX&gt;后面或.class没有工作。
170 java  generics  mockito 

4
带out参数的Func <T>
我可以将带有out参数的方法作为Func传递吗? public IList&lt;Foo&gt; FindForBar(string bar, out int count) { } // somewhere else public IList&lt;T&gt; Find(Func&lt;string, int, List&lt;T&gt;&gt; listFunction) { } Func需要一个类型,因此out不能在那里编译,调用listFunction需要一个int,不允许out in。 有没有办法做到这一点?
167 c#  .net  linq  generics  func 

14
foreach与someList.ForEach(){}
显然,有很多方法可以迭代集合。好奇是否存在任何差异,或者为什么要使用一种方法来替代另一种方法。 第一类: List&lt;string&gt; someList = &lt;some way to init&gt; foreach(string s in someList) { &lt;process the string&gt; } 另一种方式: List&lt;string&gt; someList = &lt;some way to init&gt; someList.ForEach(delegate(string s) { &lt;process the string&gt; }); 我想想起来,您将可以指定一个可重用的委托,而不是上面使用的匿名委托...
167 c#  .net  generics  loops  enumeration 

13
如何在Java中将int []转换为Integer []?
我是Java新手,非常困惑。 我有一个长度为4的大型数据集,int[]我想计算4个整数的每个特定组合出现的次数。这与计算文档中的单词频率非常相似。 我想创建一个Map&lt;int[], double&gt;将每个int []映射到正在运行的计数的列表,但是列表不使用原始类型。 所以我做了 Map&lt;Integer[], Double&gt; 我的数据存储为一个,ArrayList&lt;int[]&gt;所以我的循环应该像 ArrayList&lt;int[]&gt; data = ... // load a dataset` Map&lt;Integer[], Double&gt; frequencies = new HashMap&lt;Integer[], Double&gt;(); for(int[] q : data) { // **DO SOMETHING TO convert q from int[] to Integer[] so I can put it in the map if(frequencies.containsKey(q)) { frequencies.put(q, …


7
如何使方法的返回类型通用?
有没有办法使此方法通用,以便我可以返回字符串,bool,int或double?现在,它正在返回一个字符串,但是如果它能够找到“ true”或“ false”作为配置值,那么我想返回一个布尔值。 public static string ConfigSetting(string settingName) { return ConfigurationManager.AppSettings[settingName]; }
165 c#  .net  generics  return-type 

9
如何制作一个实现两种通用类型的接口的Java类?
我有一个通用的界面 public interface Consumer&lt;E&gt; { public void consume(E e); } 我有一个使用两种类型的对象的类,所以我想做些类似的事情: public class TwoTypesConsumer implements Consumer&lt;Tomato&gt;, Consumer&lt;Apple&gt; { public void consume(Tomato t) { ..... } public void consume(Apple a) { ...... } } 显然我做不到。 我当然可以自己执行调度,例如 public class TwoTypesConsumer implements Consumer&lt;Object&gt; { public void consume(Object o) { if (o instanceof Tomato) …

11
如何将接口用作C#通用类型约束?
有没有办法获取以下函数声明? public bool Foo&lt;T&gt;() where T : interface; 即。其中T是接口类型(类似于where T : class和struct)。 目前,我已经满足: public bool Foo&lt;T&gt;() where T : IBase; IBase被定义为一个空接口,所有我的自定义接口都继承了该接口...不太理想,但它应该可以工作...为什么不能定义泛型类型必须是接口? 对于它的价值,我想Foo要这样做,因为是在需要接口类型的地方进行反射...我可以将其作为常规参数传入,并在函数本身中进行必要的检查,但这似乎要类型安全得多(而且我假设性能更高一点,因为所有检查都是在编译时完成的)。

4
什么是具体化?
我知道Java会擦除地实现参数多态性(泛型)。我了解什么是擦除。 我知道C#通过实现实现了参数多态。我知道那可以让你写 public void dosomething(List&lt;String&gt; input) {} public void dosomething(List&lt;Int&gt; input) {} 或者您可以在运行时知道某些参数化类型的类型参数是什么,但是我不知道它是什么。 什么是改良型? 什么是固定值? 对类型/值进行整形后会发生什么?
163 c#  generics  reification 

8
为什么数组是协变的,而泛型是不变的?
摘自Joshua Bloch的Effective Java, 数组在两个重要方面不同于通用类型。第一数组是协变的。泛型是不变的。 协变量仅表示如果X是Y的子类型,则X []也将是Y []的子类型。数组是协变的,因为字符串是Object的子类型,所以 String[] is subtype of Object[] 不变式仅表示X是否为Y的子类型, List&lt;X&gt; will not be subType of List&lt;Y&gt;. 我的问题是为什么要在Java中使数组协变的决定?还有其他SO帖子,例如“ 为什么数组不变”,但“列表协变”?,但是它们似乎专注于Scala,我无法跟踪。

7
C#创建新的T()
您可以看到我正在尝试(但失败)执行以下代码: protected T GetObject() { return new T(); } 任何帮助将不胜感激。 编辑: 上下文如下。我正在使用自定义控制器类,使用标准化方法为所有控制器派生自定义控制器类。因此,在上下文中,我需要为控制器类型的对象创建一个新实例。因此,在撰写本文时,它类似于: public class GenericController&lt;T&gt; : Controller { ... protected T GetObject() { return (T)Activator.CreateInstance(ObjectType); } public ActionResult Create() { var obj = GetObject() return View(obj); } 因此,我认为在这里进行反思最容易。我同意,当然,考虑到问题的最初陈述,标记为正确的最合适答案是使用new()约束的答案。我已经解决了。
159 c#  .net  generics  c#-4.0  .net-4.0 


10
通用列表-在列表中移动项目
所以我有一个通用列表,以及oldIndex和newIndex值。 我想将项目从oldIndex移到newIndex...尽可能简单。 有什么建议? 注意 该项目应在删除之前(newIndex - 1)和newIndex 之后在项目之间结束。
155 c#  .net  generics  list 

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.