Questions tagged «generics»

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


10
使用Java泛型迭代枚举值
我试图找到一种在使用泛型时遍历枚举值的方法。不确定如何执行此操作或不确定是否可行。 下面的代码说明了我想做什么。请注意,代码T.values()在以下代码中无效。 public class Filter<T> { private List<T> availableOptions = new ArrayList<T>(); private T selectedOption; public Filter(T selectedOption) { this.selectedOption = selectedOption; for (T option : T.values()) { // INVALID CODE availableOptions.add(option); } } } 这是实例化Filter对象的方法: Filter<TimePeriod> filter = new Filter<TimePeriod>(TimePeriod.ALL); 枚举定义如下: public enum TimePeriod { ALL("All"), FUTURE("Future"), NEXT7DAYS("Next 7 …

6
如何在Spring中自动装配通用类型<T>的Bean?
我有一个Item&lt;T&gt;需要在@Configuration类中自动装配的bean 。 @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中自动装配通用类型?


7
如何在Dart中合并两个列表?
我想知道是否有一种简单的方法可以在dart中连接两个列表以创建一个全新的列表对象。我找不到任何东西,像这样: 我的列表: list1 = [1, 2, 3] list2 = [4, 5, 6] 我试过了: var newList = list1 + list2; 我想要以下的组合输出: [1, 2, 3, 4, 5, 6]

7
在C#中,“ T”是什么意思?
我有VB背景,正在为新工作转换为C#。我也想在.NET方面做得更好。我看到人们在发布的样本中经常使用关键字“ T”。在C#中,“ T”是什么意思?例如: public class SomeBase&lt;T&gt; where T : SomeBase&lt;T&gt;, new() 怎么T办?我为什么要使用它?
79 c#  .net  generics 

8
如何比较泛型类型的值?
如何比较泛型类型的值? 我将其简化为最小样本: public class Foo&lt;T&gt; where T : IComparable { private T _minimumValue = default(T); public bool IsInRange(T value) { return (value &gt;= _minimumValue); // &lt;-- Error here } } 错误是: 运算符'&gt; ='不能应用于类型'T'和'T'的操作数。 到底怎么回事!?T已被约束到IComparable,甚至它限制值类型(的时候where T: struct),我们仍然不能将任何运营商&lt;,&gt;,&lt;=,&gt;=,==或!=。(我知道涉及和的变通办法Equals()存在,但对关系运算符没有帮助)。==!= 因此,有两个问题: 为什么我们观察到这种奇怪的行为?是什么让我们从比较这是泛型类型的值称为是IComparable?难道不以某种方式破坏了通用约束的全部目的吗? 我该如何解决这个问题,或者至少要解决它? (我意识到已经有一些问题与这个看似简单的问题有关,但是没有一个线程给出详尽或可行的答案,所以在这里。)

8
C#泛型不允许委托类型约束
是否可以在C#中定义一个类,使得 class GenericCollection&lt;T&gt; : SomeBaseCollection&lt;T&gt; where T : Delegate 我一生无法在.NET 3.5中完成昨晚的工作。我尝试使用 delegate, Delegate, Action&lt;T&gt; and Func&lt;T, T&gt; 在我看来,这在某种程度上应该是允许的。我正在尝试实现自己的EventQueue。 我最终做了这个[原始近似值介意你]。 internal delegate void DWork(); class EventQueue { private Queue&lt;DWork&gt; eventq; } 但是后来我失去了为不同类型的函数重用相同定义的能力。 有什么想法吗?

8
Swift:检查泛型类型是否符合协议
我有一个这样定义的协议: protocol MyProtocol { ... } 我也有一个通用的结构: struct MyStruct &lt;T&gt; { ... } 最后,我有一个通用函数: func myFunc &lt;T&gt; (s: MyStruct&lt;T&gt;) -&gt; T? { ... } 我想在函数内部测试T类型是否符合MyProtocol。本质上,我希望能够做到(〜伪代码): let conforms = T.self is MyProtocol 但这会引发编译器错误: error: cannot downcast from 'T.Type' to non-@objc protocol type 'MyProtocol' let conforms = T.self is MyProtocol ~~~~~~ ^ …
78 generics  swift 

5
如何定义基本类型的泛型类型限制?
我有以下具有通用类型的方法: T GetValue&lt;T&gt;(); 我想将T限制为基本类型,例如int,string,float,但不限于类类型。我知道我可以为这样的类类型定义泛型: C GetObject&lt;C&gt;() where C: class; 我不确定原始类型是否可行,如何确定。


3
为什么此Java 8程序无法编译?
该程序可以在Java 7(或带有的Java 8 -source 7)中很好地编译,但是不能与Java 8一起编译: interface Iface&lt;T&gt; {} class Impl implements Iface&lt;Impl&gt; {} class Acceptor&lt;T extends Iface&lt;T&gt;&gt; { public Acceptor(T obj) {} } public class Main { public static void main(String[] args) { Acceptor&lt;?&gt; acceptor = new Acceptor&lt;&gt;(new Impl()); } } 结果: Main.java:10: error: incompatible types: cannot infer type …

5
.NET-将通用集合转换为数据表
我正在尝试将通用集合(列表)转换为DataTable。我发现以下代码可以帮助我做到这一点: // Sorry about indentation public class CollectionHelper { private CollectionHelper() { } // this is the method I have been using public static DataTable ConvertTo&lt;T&gt;(IList&lt;T&gt; list) { DataTable table = CreateTable&lt;T&gt;(); Type entityType = typeof(T); PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(entityType); foreach (T item in list) { DataRow row = table.NewRow(); …



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.