泛型 Generics

2.0 版 C# 语言和公共语言运行时 (CLR) 中增加了泛型。泛型将类型参数的概念引入 .NET Framework,类型参数使得设计如下类和方法成为可能:这些类和方法将一个或多个类型的指定推迟到客户端代码声明并实例化该类或方法的时候。例如,通过使用泛型类型参数 T,您可以编写其他客户端代码能够使用的单个类,而不致引入运行时强制转换或装箱操作的成本或风险,如下所示:

 1 namespace Generics
 2 {
 3     public class GenericList<T>
 4     {
 5         void Add(T input) { }
 6     }
 7     class TestGenericList
 8     {
 9         private class ExampleClass { }
10         static void Main()
11         {
12             // Declare a list of type int.
13             GenericList<int> list1 = new GenericList<int>();
14
15             //Declare a list of type string
16             GenericList<string> list2 = new GenericList<string>();
17
18             //Declare a list of type ExampleClass
19             GenericList<ExampleClass> list3 = new GenericList<ExampleClass>();
20         }
21     }
22 }

泛型概述


  • 使用泛型类型可以最大限度地重用代码、保护类型的安全以及提高性能。
  • 泛型最常见的用途是创建集合类。
  • .NET Framework 类库在 System.Collections.Generic 命名空间中包含几个新的泛型集合类。应尽可能地使用这些类来代替普通的类,如 System.Collections 命名空间中的 ArrayList
  • 您可以创建自己的泛型接口、泛型类、泛型方法、泛型事件和泛型委托。
  • 可以对泛型类进行约束以访问特定数据类型的方法。
  • 关于泛型数据类型中使用的类型的信息可在运行时通过使用反射获取
时间: 2024-11-03 21:17:50

泛型 Generics的相关文章

Java 语法 索引 ----- 泛型(Generics)

class B<T extends A> {} class A {} -------------------------- class C<T extends I> {} interface I {} ----------------------- class D<T extends A & I> {} class E<T extends A & I, U extends A & I> {} 参考文献: Java Quick Synt

java泛型 generics --- 第三部分 泛型、继承、和子类型

Generics, Inheritance, and Subtypes 正如你所知,可以把一种对象类型赋值给另一种类型,只要他们是兼容的.例如,你可以把Integer对象赋值给Object. Object someObject = new Object(); Integer someInteger = new Integer(10); someObject = someInteger; // OK 在面向对象技术中,这被称作"is a"关系.即一个Integer是一中Object,该赋

二十一、泛型 Generics

1.概述 泛型是Swift中最强大的特性之一,使用泛型可以写出灵活.可重用.干净.抽象的代码,并且避免代码重复.实际上在第一章中我们就接触到了泛型,Array 和 Dictionary 是泛型容器,可以存入任何类型. 2. 泛型所要解决的问题 The Problem That Generics Solve 下面定义了一个交换两个值的函数,它没有使用泛型特性: func swapTwoInts(inout a: Int, inout b: Int) { let temporaryA = a a =

Java泛型Generics

转载请标明出处: http://blog.csdn.net/wu_wxc/article/details/51493181 泛型 泛型是JDK 5中引入的一个新特性 在尖括号中包含的是形式类型参数,可以在整个类的声明中被使用,当类被使用时,会使用具体的实际类型参数来代替 形式类型参数的命名:尽量使用单个大写字母 普通泛型 一个泛型类型 package cn.wuxiaocheng; class Person<T> { // 标识符可以随便写,T是type的简称 private T name;

Java 泛型(Generics) 综述

一. 引子 一般的类和方法,只能使用具体类型:要么是基本类型,要么是自定义类型.如果要编写可以应用于多种类型的代码,这种刻板的限制对代码的束缚就会很大. 多态算是一种泛化机制,但对代码的约束还是太强(要么继承父类,要么实现接口). 有许多原因促成了泛型的出现,而最引人注目的一个原因,就是为了创造容器类.(泛型的主要目的之一就是用来指定容器要持有什么类型的对象,而且由编译器来保证类型的正确性) 例如,在 Java 实现加入泛型前,ArrayList 只维护一个 Object 类型的数组: publ

Java 泛型 (generics) 的使用

泛型是JDK1.5以后增加的,它可以帮助我们建立类型安全的集合.在使用了泛型的集合中,遍历时不必进行强制类型转换.JDK提供了支持泛型的编译器,将运行时的类型检查提前到了编译时执行,提高了代码可读性和安全性. 泛型的本质就是“数据类型的参数化”. 我们可以把“泛型”理解为数据类型的一个占位符(形式参数),即告诉编译器,在调用泛型时必须传入实际类型. 自定义泛型: 我们可以在类的声明处增加泛型列表,如:<T,E,V>.字符可以是任何标识符,一般采用这3个字母. demo: package ftf

iOS 强大的泛型,同样也可以对UIButton进行扩展

文章围绕这五点: 1. 泛型是什么 2. 为什么要用泛型 3. 泛型怎么用 4. 泛型进阶 5. 泛型的延伸使用 泛型(Generics)是什么? 引用Apple中Generics的描述: Generic code enables you to write flexible, reusable functions and types that can work with any type, subject to requirements that you define. You can writ

java泛型小问题

几年前当Java5还未正式发布的时候,看到过一些人写的介绍Tiger中的新特性,当时对我第一感觉冲击最大的就是泛型(generics)和注释(annotation),因为它们直接影响了我们编码的语法习惯. 在后来的使用过程中,对于泛型一直没有特别深入的使用过,没有遇到那样的需求和场景.只需要了解Java中的泛型是编译期的,运行期被“擦拭”掉了:然后还有几种通配符的表示就足够了. 直到一天我在查看Java5中Enum的源代码时,发现它是这么定义的: Java代码 public abstract c

Java笔记(8)-泛型与集合框架

泛型与集合框架 泛型 泛型类 泛型类声明对象 示例 泛型接口 示例 泛型的目的 链表 LinkedList E 泛型类 常用方法 遍历链表 示例 排序和查找 示例 洗牌和旋转 堆栈 示例 散列映射 HashMap KV 泛型类 常用方法 遍历散列映射 基于散列映射的查询 示例 树集 TreeSetE泛型类 节点的大小关系 TreeSet类常用方法 示例 树映射 泛型与集合框架 组织数据之结构及相关操作. 泛型 泛型(Generics)是在JDK1.5中推出的,其主要目的是可以建立具有类型安全的集