Questions tagged «generics»

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


9
XML可序列化可序列化对象的通用列表
我可以序列化可序列化对象的通用列表,而无需指定它们的类型。 类似于下面的破损代码背后的意图: List<ISerializable> serializableList = new List<ISerializable>(); XmlSerializer xmlSerializer = new XmlSerializer(serializableList.GetType()); serializableList.Add((ISerializable)PersonList); using (StreamWriter streamWriter = System.IO.File.CreateText(fileName)) { xmlSerializer.Serialize(streamWriter, serializableList); } 编辑: 对于那些想了解细节的人:当我尝试运行此代码时,它在XMLSerializer [...]行上的错误如下: 无法序列化接口System.Runtime.Serialization.ISerializable。 如果我改变了List<object>我会得到"There was an error generating the XML document."。InnerException详细信息是"{"The type System.Collections.Generic.List1[[Project1.Person, ConsoleFramework, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]] may not be used in this context."}" 人员对象定义如下: [XmlRoot("Person")] public …


5
可以在XAML(.NET 4之前的版本)中指定通用类型吗?
在XAML中,我可以声明一个DataTemplate以便在显示特定类型时使用该模板。例如,此DataTemplate将使用TextBlock显示客户名称: <DataTemplate DataType="{x:Type my:Customer}"> <TextBlock Text="{Binding Name}" /> </DataTemplate> 我想知道是否可以定义将在每次显示IList <Customer>时使用的DataTemplate。因此,例如,如果ContentControl的Content是ObservableCollection <Customer>,它将使用该模板。 是否可以使用{x:Type}标记扩展在XAML中声明类似IList的泛型类型?
73 c#  wpf  xaml  generics 

8
Lists.newArrayList与新ArrayList
创建ListString的最佳构造是什么?是Lists.newArrayList()(来自番石榴)还是new ArrayList()? 只是个人喜好吗? 还是仅仅是Type泛型类型推断? 还是使用Lists.newArrayList()有任何理论或实践价值?
73 java  generics  guava 

1
为什么T在Collections.max()签名中受对象限制?
刚刚经历了Java 7java.util.Collections类的实现,并看到了一些我不理解的东西。在max函数签名中,为什么T受限制Object? public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll) { Iterator<? extends T> i = coll.iterator(); T candidate = i.next(); while (i.hasNext()) { T next = i.next(); if (next.compareTo(candidate) > 0) candidate = next; } return candidate; } max 如果省略Object绑定,似乎工作正常。 public static <T …
73 java  generics 

4
什么是泛型泛型?它们如何解决“类型擦除”问题?为什么不进行重大更改就不能添加它们?
我已经阅读了尼尔·古夫特(Neal Gafter)关于该主题的博客,但在很多方面仍不清楚。 为什么在给定Java,JVM和现有collection API当前状态的情况下,无法创建Collections API的实现来保留类型信息?这些难道不能以保留向后兼容性的方式替换Java未来版本中的现有实现吗? 举个例子: List<T> list = REIList<T>(T.Class); REIList是这样的: public REIList<T>() implements List { private Object o; private Class klass; public REIList(Object o) { this.o = o; klass = o.getClass(); } ... the rest of the list implementation ... 并且这些方法使用Object o和Class klass来获取类型信息。 为什么保留通用类信息需要更改语言而不仅仅是JVM实现更改? 我不明白什么?

13
如何确定列表是否用Java排序?
我想要一种方法,该方法采用List<T>whereT实现Comparable并返回,true或者false取决于列表是否已排序。 用Java实现此的最佳方法是什么?显然,泛型和通配符是为了能够轻松处理此类事情,但我正陷入困境。 如果有一个类似的方法来检查列表是否是相反的顺序,那也很好。

6
将IsAssignableFrom与“开放”通用类型一起使用
使用反射,我试图找到从给定基类继承的一组类型。不需要很长时间就可以找到简单类型,但是在泛型方面我感到很困惑。 对于这段代码,第一个IsAssignableFrom返回true,但是第二个返回false。但是,最终的任务编译就可以了。 class class1 { } class class2 : class1 { } class generic1<T> { } class generic2<T> : generic1<T> { } class Program { static void Main(string[] args) { Type c1 = typeof(class1); Type c2 = typeof(class2); Console.WriteLine("c1.IsAssignableFrom(c2): {0}", c1.IsAssignableFrom(c2)); Type g1 = typeof(generic1<>); Type g2 = typeof(generic2<>); Console.WriteLine("g1.IsAssignableFrom(g2): …

13
将通用列表转换为数组
我已经搜索过了,但是不幸的是,我没有得到正确的答案。 class Helper { public static <T> T[] toArray(List<T> list) { T[] array = (T[]) new Object[list.size()]; for (int i = 0; i < list.size(); i++) { array[i] = list.get(i); } return array; } } 测试一下: public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("abc"); String[] array …
72 java  generics 

2
通用方法如何,何时何地具体化?
这个问题让我想知道通用方法的具体实现在哪里真正存在。我已经尝试过Google,但没有提出正确的搜索条件。 如果我们举这个简单的例子: class Program { public static T GetDefault<T>() { return default(T); } static void Main(string[] args) { int i = GetDefault<int>(); double d = GetDefault<double>(); string s = GetDefault<string>(); } } 在我的脑海中,我一直认为在某个时候它会导致实现具有3种必要的具体实现,以便在天真伪整型中,我们将拥有这种逻辑的具体实现,其中所使用的特定类型会导致正确的堆栈分配等。 。 class Program { static void Main(string[] args) { int i = GetDefaultSystemInt32(); double d = GetDefaultSystemFloat64(); …
72 c#  .net  generics 


4
Spring RESTTemplate的泛型
我有这样的课: public class Wrapper<T> { private String message; private T data; public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public T getData() { return data; } public void setData(T data) { this.data = data; } } 我使用resttemplate如下: ... Wrapper<Model> response = restTemplate.getForObject(URL, …

12
Java泛型:列表,列表<对象>,列表<?>
有人可以详细解释以下类型之间的区别吗? List List&lt;Object&gt; List&lt;?&gt; 让我更具体一点。我什么时候要使用 // 1 public void CanYouGiveMeAnAnswer(List l) { } // 2 public void CanYouGiveMeAnAnswer(List&lt;Object&gt; l) { } // 3 public void CanYouGiveMeAnAnswer(List&lt;?&gt; l) { }
71 java  generics 

8
通用类型检查
有没有一种方法可以强制/限制传递给基元的类型? (布尔,整数,字符串等) 现在,我知道您可以通过where子句将泛型类型参数限制为类型或接口实现。但是,这并不适合基元(AFAIK),因为它们并不具有共同点(除了对象之前有人说过!:P)。 因此,我目前的想法是咬紧牙关,做一个大的switch语句,并在失败时抛出ArgumentException。 编辑1: 只是澄清一下: 代码定义应类似于: public class MyClass&lt;GenericType&gt; .... 和实例化: MyClass&lt;bool&gt; = new MyClass&lt;bool&gt;(); // Legal MyClass&lt;string&gt; = new MyClass&lt;string&gt;(); // Legal MyClass&lt;DataSet&gt; = new MyClass&lt;DataSet&gt;(); // Illegal MyClass&lt;RobsFunkyHat&gt; = new MyClass&lt;RobsFunkyHat&gt;(); // Illegal (but looks awesome!) 编辑2 @Jon Limjap-好点了,我已经考虑过了。.我确定有一种通用方法可以用来确定类型是值类型还是引用类型。 这在立即删除许多我不想处理的对象时可能很有用(但是您需要担心所使用的结构,例如Size)。有趣的问题不是吗?:) 这里是: where T : struct 取自MSDN。 我很好奇..这可以在.NET …

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.