Questions tagged «generics»

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

15
在C#中对IList进行排序
所以我今天遇到了一个有趣的问题。我们有一个返回IList的WCF Web服务。在我想对其进行排序之前,这并不是什么大不了的事情。 事实证明,IList接口没有内置的排序方法。 我最终使用该ArrayList.Adapter(list).Sort(new MyComparer())方法解决了问题,但对我来说似乎有点“贫民窟”。 我玩弄了编写扩展方法的方法,也继承了IList并实现了自己的Sort()方法以及将其强制转换为List,但这些方法似乎都不是很优雅。 所以我的问题是,有人对IList进行排序是否有一种优雅的解决方案
86 c#  generics  sorting  ilist 


14
在C#中,为什么List <string>对象不能存储在List <object>变量中
似乎List对象不能存储在C#中的List变量中,甚至不能以这种方式显式转换。 List&lt;string&gt; sl = new List&lt;string&gt;(); List&lt;object&gt; ol; ol = sl; 结果无法将类型隐式转换System.Collections.Generic.List&lt;string&gt;为System.Collections.Generic.List&lt;object&gt; 然后... List&lt;string&gt; sl = new List&lt;string&gt;(); List&lt;object&gt; ol; ol = (List&lt;object&gt;)sl; 结果无法将类型转换System.Collections.Generic.List&lt;string&gt;为System.Collections.Generic.List&lt;object&gt; 当然,您可以通过将所有内容从字符串列表中拉出并一次放回一个列表中来完成此操作,但这是一个相当复杂的解决方案。


3
Java 8中异常类型推断的独特功能
在此站点上为另一个答案编写代码时,我遇到了这种特殊性: static void testSneaky() { final Exception e = new Exception(); sneakyThrow(e); //no problems here nonSneakyThrow(e); //ERRROR: Unhandled exception: java.lang.Exception } @SuppressWarnings("unchecked") static &lt;T extends Throwable&gt; void sneakyThrow(Throwable t) throws T { throw (T) t; } static &lt;T extends Throwable&gt; void nonSneakyThrow(T t) throws T { throw t; } 首先,我很困惑为什么sneakyThrow对编译器的调用正常。T当未提及任何未经检查的异常类型时,它推断出什么可能的类型? …

4
什么是Kotlin关键字
我听不懂,在kotlin中找不到out关键字的含义。 您可以在此处查看示例: List&lt;out T&gt; 如果有人可以解释这个意思。我们将不胜感激。
85 generics  kotlin 

10
将Hibernate Query.list()强制转换为List <Type>的“正确”方法是什么?
我是Hibernate的新手,我正在写一个简单的方法来返回与特定过滤器匹配的对象列表。List&lt;Foo&gt;似乎是自然的回报类型。 不管我做什么,除非雇用了ugly,否则似乎都无法使编译器满意@SuppressWarnings。 import java.util.List; import org.hibernate.Query; import org.hibernate.Session; public class Foo { public Session acquireSession() { // All DB opening, connection etc. removed, // since the problem is in compilation, not at runtime. return null; } @SuppressWarnings("unchecked") /* &lt;----- */ public List&lt;Foo&gt; activeObjects() { Session s = acquireSession(); Query q …

7
.NET是否具有内置的EventArgs <T>?
我准备为带有单个参数的事件args创建通用的EventArgs类: public class EventArg&lt;T&gt; : EventArgs { // Property variable private readonly T p_EventData; // Constructor public EventArg(T data) { p_EventData = data; } // Property for EventArgs argument public T Data { get { return p_EventData; } } } 在此之前,C#是否具有与该语言相同的内置功能?我似乎想起了C#2.0发布时遇到的类似情况,但现在找不到了。 或者换一种说法,我必须创建自己的通用EventArgs类,还是C#提供一个?谢谢你的帮助。
84 c#  generics  eventargs 

6
在C#中创建通用方法
我正在尝试将一堆类似的方法组合成一个通用方法。我有几种返回查询字符串值的方法,如果该查询字符串不存在或格式不正确,则返回null。如果所有类型本机均可为空,这将很容易,但是我必须对整数和日期使用可为空的泛型类型。 这就是我现在所拥有的。但是,如果数字值无效,它将传回0,但不幸的是,在我的方案中,该值是有效值。有人可以帮我吗?谢谢! public static T GetQueryString&lt;T&gt;(string key) where T : IConvertible { T result = default(T); if (String.IsNullOrEmpty(HttpContext.Current.Request.QueryString[key]) == false) { string value = HttpContext.Current.Request.QueryString[key]; try { result = (T)Convert.ChangeType(value, typeof(T)); } catch { //Could not convert. Pass back default value... result = default(T); } } return result; }
84 c#  generics 

6
在C#中将Int强制转换为通用枚举
与C#中将Cast转换为枚举类似,但我的枚举是Generic Type参数。处理此问题的最佳方法是什么? 例: private T ConvertEnum&lt;T&gt;(int i) where T : struct, IConvertible { return (T)i; } 产生编译器错误 Cannot convert type 'int' to 'T' 完整代码如下,其中value可以包含int或null。 private int? TryParseInt(string value) { var i = 0; if (!int.TryParse(value, out i)) { return null; } return i; } private T? TryParseEnum&lt;T&gt;(string value) where T …
84 c#  generics  casting  enums 

6
泛型类的静态成员是否绑定到特定实例?
这更多是文档而不是实际问题。到目前为止,这似乎还没有得到解决(除非我错过了),所以这里是: 想象一下一个包含静态成员的通用类: class Foo&lt;T&gt; { public static int member; } 每个特定类是否都有成员的新实例,或者所有Foo型类只有一个实例? 可以通过以下代码轻松验证: Foo&lt;int&gt;.member = 1; Foo&lt;string&gt;.member = 2; Console.WriteLine (Foo&lt;int&gt;.member); 结果如何?此行为记录在哪里?
83 c#  .net  generics  static 

5
Java:有界通配符或有界类型参数?
最近,我读了这篇文章:http : //download.oracle.com/javase/tutorial/extra/generics/wildcards.html 我的问题是,而不是创建像这样的方法: public void drawAll(List&lt;? extends Shape&gt; shapes){ for (Shape s: shapes) { s.draw(this); } } 我可以创建一个这样的方法,它可以正常工作: public &lt;T extends Shape&gt; void drawAll(List&lt;T&gt; shapes){ for (Shape s: shapes) { s.draw(this); } } 我应该使用哪种方式?通配符在这种情况下有用吗?

1
吞吐量原理说明
我读了O'Reilly的书,因为我了解了这一计算原理。 extends当您仅从结构中获取值时,请使用通配符。 super仅将值放入结构时,请使用通配符。 当您都想从结构中放入和放置结构时,请不要使用通配符。 例外情况是: extends除了值null(属于每个引用类型)之外,您不能将任何其他内容放入用通配符声明的类型中。 您不能从使用super通配符声明的类型中获取任何东西,除了type的值(Object这是每个引用类型的超类型)之外。 谁能帮助我深入探索这个规则?如果可能的话,请把它们分层。
82 java  generics 

6
测试对象是否为参数类型的实例
有没有办法确定对象是否是泛型类型的实例? public &lt;T&gt; test(Object obj) { if (obj instanceof T) { ... } } 这显然行不通。有其他选择吗?就像我想使用Java反射来实例化一个类,然后检查以确保它是通用类型T。

11
C#泛型和类型检查
我有一个使用IList&lt;T&gt;作为参数的方法。我需要检查该T对象的类型是什么,并基于该对象执行某些操作。我试图使用该T值,但编译器不允许使用它。我的解决方案如下: private static string BuildClause&lt;T&gt;(IList&lt;T&gt; clause) { if (clause.Count &gt; 0) { if (clause[0] is int || clause[0] is decimal) { //do something } else if (clause[0] is String) { //do something else } else if (...) //etc for all the types else { throw new ApplicationException("Invalid type"); } } …
82 c#  generics  types 

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.