atitit.泛型编程总结最佳实践 vO99 java c++ c#.net php

\

1. 泛型历史 1

由来 1

2. 泛型的机制编辑 1

机制 1

编译机制 2

3. 泛型方法定义1::前定义 2

4. 泛型方法定义2::后定义,方法也需要加<T>标签... 2

5. 调用泛型方法::: cls.<String>meth(); 2

6.  //反回值为范型 2

7. 参考 3

1. 泛型历史

泛型编程(Generic Programming)最初提出时的动机很简单直接:发明一种语言机制,能够帮助实现一个通用的标准容器库。所谓通用的标准容器库,就是要能够做到,比如用一个List类存放所有可能类型的对象这样的事;泛型编程让你编写完全一般化并可重复使用的算法,其效率与针对某特定数据类型而设计的算法相同。泛型即是指具有在多种数据类型上皆可操作的含意,与模板有些相似。STL巨大,而且可以扩充,它包含很多计算机基本算法和数据结构,而且将算法与数据结构完全分离,其中算法是泛型的,不与任何特定数据结构或对象类型系在一起。

由来

泛型编程最初诞生于C++中,由Alexander Stepanov[2]和David Musser[3]创立。目的是为了实现C++的STL(标准模板库)。其语言支持机制就是模板(Templates)。模板的精神其实很简单:参数化类型。换句话说,把一个原本特定于某个类型的算法或类当中的类型信息抽掉,抽出来做成模板参数T。比如qsort泛化之后就变成了:

作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://blog.csdn.net/attilax

2. 泛型的机制编辑

机制

C#泛型代码在被编译为IL代码和无数据时,采用特殊的占位符来表示泛型类型,并用专有的IL指令支持泛型操作。而真正的泛型实例化工作以"on-demand"的方式,发生在JIT编译时。

编译机制

1. 第一轮编译时,编译器只为Stack<T>(栈算法)类型产生“泛型版”的IL代码与元数据-----并不进行泛型类型的实例化,T在中间只充当占位符

2. JIT编译时,当JIT编译器第一次遇到Stack<int>时,将用int替换“泛型版”IL代码与元数据中的T---进行泛型类型的实例化。CLR为所有类型参数为“引用类型”的泛型类型产生同一份代码;但如果类型参数为“值类型”,对每一个不同的“值类型”,CLR将为其产生一份独立的代码。

3.泛型方法定义1::前定义

public static <atiType,retType> retType reduceO4(atiType obj, Func function) {

4. 泛型方法定义2::后定义,方法也需要加<T>标签...

public void bindList2grid<T>(List<T> li, DataTable dt)
        {

5. 调用泛型方法::: cls.<String>meth();

6.  //反回值为范型

public static T getValue<T>(object entity, string fieldName)

7. 参考

paip.使用泛型时未能找到类型或命名空间名称“T - attilax的专栏 - 博客频道 - CSDN.NET.htm

paip.自定义java 泛型类与泛型方法的实现总结 - attilax的专栏 - .

atitit.泛型编程总结最佳实践 vO99 java c++ c#.net php相关推荐

  1. HPB主网接入最佳实践之Java版

    1.开始准备 1.1 学习门槛 熟悉Java的基本语法和使用 熟悉Java的IDE工具基本使用(Eclipse,IDEA) 熟悉Git版本管理的基本语法和使用 熟悉SpingBoot开发(本Demo提 ...

  2. java写入excel文件内存不足,java 导出 excel 最佳实践,java 大文件 excel 避免OOM(内存溢出) excel 工具框架...

    产品需求 产品经理需要导出一个页面的所有的信息到 EXCEL 文件. 需求分析 对于 excel 导出,是一个很常见的需求. 最常见的解决方案就是使用 poi 直接同步导出一个 excel 文件. 客 ...

  3. Java 中处理 Exception 的最佳实践

    Java 中处理 Exception 的最佳实践 在Java中处理异常并不是一个简单的事情.不仅仅初学者很难理解,即使一些有经验的开发者也需要花费很多时间来思考如何处理异常,包括需要处理哪些异常,怎样 ...

  4. 开发 Java 应用使用 TiDB 的最佳实践

    本文主要介绍如何开发 Java 应用程序以更好地使用 TiDB,包括开发中的常见问题与最佳实践. Java 应用中的数据库相关组件 通常 Java 应用中和数据库相关的常用组件有: 网络协议:客户端通 ...

  5. 【TiDB 最佳实践系列】开发 Java 应用使用 TiDB 的最佳实践

    原文来源: https://tidb.net/blog/ae01003e 作者: Suli, ZhangMing 本文主要介绍如何开发 Java 应用程序以更好地使用 TiDB,包括开发中的常见问题与 ...

  6. tomcat 参数最佳实践_一线架构师开发总结:剖析并发编程+JVM性能,深入Tomcat与MySQL...

    每一个程序员都有自己清晰的职业规划和终极目标,无论之后是继续钻研技术,还是转管理岗.产品岗,都是需要自己具备有一定的实力,换句话说技术要牛逼.架构师,是很多程序员的终极目标,而成为一名Java架构师, ...

  7. 创建设计模式 - Singleton设计模式(最佳实践与示例)

    Java Singleton设计模式最佳实践与示例 Java Singleton Pattern是四种帮派设计模式之一,属于创建设计模式类别.从定义来看,它似乎是一个非常简单的设计模式,但是当涉及到实 ...

  8. 离线批量数据通道Tunnel的最佳实践及常见问题

    基本介绍及应用场景 Tunnel是MaxCompute提供的离线批量数据通道服务,主要提供大批量离线数据上传和下载, 仅提供每次批量大于等于64MB数据的场景,小批量流式数据场景请使用DataHub实 ...

  9. atitit.人脸识别的应用场景and使用最佳实践 java .net php

    atitit.人脸识别的应用场景and使用最佳实践 java .net php 1. 人脸识别的应用场景 1 2. 框架选型 JNI2OpenCV.dll and JavaCV 1 3. Url ap ...

  10. 编写高性能Java代码的最佳实践

    编写高性能Java代码的最佳实践 摘要:本文首先介绍了负载测试.基于APM工具的应用程序和服务器监控,随后介绍了编写高性能Java代码的一些最佳实践.最后研究了JVM特定的调优技巧.数据库端的优化和架 ...

最新文章

  1. 在服务器无root权限手动安装texlive
  2. jQuery EasyUI DataGrid - 格式化列(formatter )
  3. mysql连接数thread_MySQL数据库负载很高连接数很多怎么处理
  4. luogu P4238 多项式求逆 (模板题、FFT)
  5. 客户端到服务器的请求响应时间,客户端到服务器的网络响应时间
  6. oracle long转为string,实现全局拦截前端传入的Long类型id转String
  7. JAVA遇见HTML——JSP篇(JSP状态管理)
  8. java 生成url_JAVA 通过URL生成水印图
  9. JQuery Datatables editor 本地编辑功能
  10. 8.0服务器维护时间,魔兽世界8.0服务器维护把玩家心态搞崩 网友:喜闻乐见
  11. LeetCode刷题 --杂篇 --数组,链表,栈,队列
  12. Python实现人脸识别 + 手机推送功能,老板来了你就会收到短信提示
  13. 如何用WinCC发送报警消息至钉钉
  14. python列表删除行_Python DataFrame – 删除具有属于值列表的列值的行
  15. Web终端SSH功能
  16. 黑苹果系统补丁 MacOS Unlocker for VMware 3.0 下载和解锁安装macOS X 10.14图文教程
  17. 【基于Proteus 8 Professional和Keil uVision5简单共阴极数码管点亮】
  18. 归一化MinMaxScaler()、标准化StandardScaler()(特征工程之特征预处理)
  19. 2020年前端安全综述-填坑记
  20. 解决sql update 1292 - Truncated incorrect DOUBLE value:

热门文章

  1. java 类注释标准_Java 标准注释
  2. mapreduce实现——腾讯大数据QQ共同好友推荐系统【你可能认识的人】
  3. webpack4.0版本中的js压缩问题
  4. 开发APP不搞清楚这20个问题,必然沦为一场灾难
  5. 开坑,写点Polymer 1.0 教程第2篇(上)——hello world篇
  6. Source Insight 3.5 序列号分享
  7. CE驱动程序快速入门(转)
  8. Linux-第二篇常用命令
  9. mysql的update和case when同步使用
  10. vs2017 出现“文件中的类都不能进行设计,因此未能为该文件显示设计器”问题处理...