Questions tagged «generics»

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


11
无效的泛型类型参数的最佳例外
我目前正在为UnconstrainedMelody写一些代码,该代码具有与枚举有关的通用方法。 现在,我有一个带有一堆方法的静态类,这些方法只能与“标志”枚举一起使用。我不能将此添加为约束...因此它们也可能会与其他枚举类型一起调用。在那种情况下,我想抛出一个异常,但是我不确定该抛出哪个异常。 只是要具体一点,如果我有这样的东西: // Returns a value with all bits set by any values public static T GetBitMask<T>() where T : struct, IEnumConstraint { if (!IsFlags<T>()) // This method doesn't throw { throw new ??? } // Normal work here } 最好的例外是什么?ArgumentException听起来很合逻辑,但这是类型参数而不是普通参数,这很容易使事情混淆。我应该介绍自己的TypeArgumentException课程吗?使用InvalidOperationException?NotSupportedException?还要别的吗? 我宁愿没有为此创造我自己的异常,除非它显然是做正确的事。
106 c#  generics  exception 


10
如何在运行时读取类的属性?
我正在尝试创建一个通用方法,该方法将读取类的属性并在运行时返回该值。我该怎么做? 注意:DomainName属性属于DomainNameAttribute类。 [DomainName("MyTable")] Public class MyClass : DomainBase {} 我想产生的是: //This should return "MyTable" String DomainNameValue = GetDomainName<MyClass>();

1
调用静态通用方法
我遇到了一个涉及静态泛型方法的奇怪情况。这是代码: class Foo<E> { public static <E> Foo<E> createFoo() { // ... } } class Bar<E> { private Foo<E> member; public Bar() { member = Foo.createFoo(); } } 我为什么不必在表达式中指定任何类型参数Foo.createFoo()?这是某种类型推断吗?如果要对此明确,如何指定类型参数?

15
如何在Hibernate HQL结果中避免类型安全警告?
例如我有这样的查询: Query q = sess.createQuery("from Cat cat"); List cats = q.list(); 如果我尝试做这样的事情,它将显示以下警告 Type safety: The expression of type List needs unchecked conversion to conform to List<Cat> List<Cat> cats = q.list(); 有办法避免吗?
105 java  generics 

9
无法在Java中创建LinkedList数组…?
我正在研究一个稀疏矩阵类,该类需要使用数组LinkedList来存储矩阵的值。数组的每个元素(即每个LinkedList)代表矩阵的一行。并且,LinkedList数组中的每个元素代表一列和存储的值。 在我的课程中,我将数组声明为: private LinkedList<IntegerNode>[] myMatrix; 并且,在的构造函数中SparseMatrix,我尝试定义: myMatrix = new LinkedList<IntegerNode>[numRows]; 我最终得到的错误是 无法创建的通用数组LinkedList<IntegerNode>。 因此,我对此有两个问题: 我做错了什么 如果无法创建数组,为什么在数组的声明中可以接受该类型? IntegerNode是我创建的课程。而且,我所有的类文件都打包在一起。
102 java  arrays  generics 

13
我为什么要关心Java没有泛型泛型?
这是我最近在一次采访中提出的一个问题,候选人希望将其添加到Java语言中。人们通常认为Java没有通用化泛滥的痛苦,但是当Java 泛化后,候选人实际上并不能告诉我他在那里可以实现的目标。 显然,由于Java中允许使用原始类型(以及不安全的检查),因此有可能破坏泛型并以List<Integer>实际包含Strings的a结尾。如果类型信息得到证实,这显然变得不可能。但是肯定不止于此! 人们可以发布他们真正想做的事的示例吗?我的意思是,显然您可以List在运行时获取a的类型-但是您将如何处理? public <T> void foo(List<T> l) { if (l.getGenericType() == Integer.class) { //yeah baby! err, what now? 编辑:对此的快速更新,因为答案似乎主要是担心需要将a Class作为参数传递(例如EnumSet.noneOf(TimeUnit.class))。我一直在寻找一些不可能做到的东西。例如: List<?> l1 = api.gimmeAList(); List<?> l2 = api.gimmeAnotherList(); if (l1.getGenericType().isAssignableFrom(l2.getGenericType())) { l1.addAll(l2); //why on earth would I be doing this anyway?


5
协议只能用作一般约束,因为它具有Self或relatedType要求
我有一个协议RequestType,它具有如下的relatedType模型。 public protocol RequestType: class { associatedtype Model var path: String { get set } } public extension RequestType { public func executeRequest(completionHandler: Result<Model, NSError> -> Void) { request.response(rootKeyPath: rootKeyPath) { [weak self] (response: Response<Model, NSError>) -> Void in completionHandler(response.result) guard let weakSelf = self else { return } if …

4
帮助解决C#泛型错误-“类型'T'必须是不可为空的值类型”
我是C#的新手,不理解为什么以下代码不起作用。 public static Nullable<T> CoalesceMax<T>(Nullable<T> a, Nullable<T> b) where T : IComparable { if (a.HasValue && b.HasValue) return a.Value.CompareTo(b.Value) < 0 ? b : a; else if (a.HasValue) return a; else return b; } // Sample usage: public DateTime? CalculateDate(DataRow row) { DateTime? result = null; if (!(row["EXPIRATION_DATE"] is DBNull)) …
100 c#  generics 



8
在C#中,如何实例化方法内部传递的泛型类型?
如何在InstantiateType<T>下面的方法中实例化类型T ? 我收到错误消息:“ T”是“类型参数”,但其用法类似于“变量”。: (向下滚动以获取答复) using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace TestGeneric33 { class Program { static void Main(string[] args) { Container container = new Container(); Console.WriteLine(container.InstantiateType<Customer>("Jim", "Smith")); Console.WriteLine(container.InstantiateType<Employee>("Joe", "Thompson")); Console.ReadLine(); } } public class Container { public T InstantiateType<T>(string firstName, string lastName) where T : IPerson …
98 c#  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.