什么是泛型?简单记录一下自己理解的泛型。
2017-12-08 21:02
591 查看
今天简单梳理一下自己理解的泛型,以便以后查阅。
泛型是JDK1.5引入的新特性,也是最重要的一个特性
泛型可以在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的
泛型的原理就是“类型的参数化”,即把类型看做参数。
也就是说把所要操作的数据类型看做参数,就像方法的形式参数是运行时传递的值的占位符一样。
简单的说,类型变量扮演的角色就如同一个参数,它提供给编译器用来类型检查的信息
泛型可以提高代码的拓展性和重要性。
总结:所谓泛型,即通过参数化类型来实现在同一份代码上操作多种数据类型,泛型变成是一种编程范式,它利用“参数化类型”将类型抽象化,从而实现更为灵活的复用。
泛型的应用场景:是当需要创建多个对象,这些对象的逻辑都一样,但是数据类型不一样,这个时候可以创建一个泛型类。这样就可以避免大量的代码冗余。
举个例子,比如需要一个对象有一个属性,如果这个属性你想得到整型,又想得到字符串。又想得到bool类型,那么最简单的方法当然是创建三个类,然后new两三个对象出来。 或者用强制类型转换,但是强制类型转换有时候也会出错的。
但是用了泛型可以这样做。
这样只需要定义一个泛型类,既能传入字符串 又能传入整型。 这个结果打印出来的就是 chenhao 1
泛型是JDK1.5引入的新特性,也是最重要的一个特性
泛型可以在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的
泛型的原理就是“类型的参数化”,即把类型看做参数。
也就是说把所要操作的数据类型看做参数,就像方法的形式参数是运行时传递的值的占位符一样。
简单的说,类型变量扮演的角色就如同一个参数,它提供给编译器用来类型检查的信息
泛型可以提高代码的拓展性和重要性。
总结:所谓泛型,即通过参数化类型来实现在同一份代码上操作多种数据类型,泛型变成是一种编程范式,它利用“参数化类型”将类型抽象化,从而实现更为灵活的复用。
泛型的应用场景:是当需要创建多个对象,这些对象的逻辑都一样,但是数据类型不一样,这个时候可以创建一个泛型类。这样就可以避免大量的代码冗余。
举个例子,比如需要一个对象有一个属性,如果这个属性你想得到整型,又想得到字符串。又想得到bool类型,那么最简单的方法当然是创建三个类,然后new两三个对象出来。 或者用强制类型转换,但是强制类型转换有时候也会出错的。
但是用了泛型可以这样做。
public class GenericDemo1 { public static void main(String[] args) { // TODO Auto-generated method stub //创建一个泛型类对象 GenericClass<String> gen1=new GenericClass<String>("chenhao"); System.out.println(gen1.getData()); GenericClass<Integer> gen2=new GenericClass<Integer>(1); System.out.println(gen11.getData()); } } class GenericClass<T>{//创建一个泛型类 private T data; public Animal(){} public Animal(T data){ this.data=data; } public void setData(T data){ this.data=data; } public T getData(){ return data; } }
这样只需要定义一个泛型类,既能传入字符串 又能传入整型。 这个结果打印出来的就是 chenhao 1
相关文章推荐
- 大四最后的一个多月,我想开始写点什么,记录一下自己能在这条路走多远
- C语言三字棋游戏先简单介绍一下三子棋的规则,方便我们接下来的编程和理解。规则如下: 在九宫格棋盘上,只要将自己的三个棋子走成一条线(横、竖、对角线),对方就算输了。
- input屏蔽历史记录 ;function($,undefined) 前面的分号是什么用处 JSON 和 JSONP 两兄弟 document.body.scrollTop与document.documentElement.scrollTop兼容 URL中的# 网站性能优化 前端必知的ajax 简单理解同步与异步 那些年,我们被耍过的bug——has
- 简单记录一下自己开发用到的工具
- oauth2 原理和理解(转载阮一峰的记录一下,后面自己再总结)
- 简单理解一下什么是脚本语言
- 简单记录一下简单的理解
- 什么最简单最容易入门 谁是自学编程的请介绍一下自己的经验
- 记录一下自己简单的想法
- 总结一下一些简单但是自己又不清楚的知识点(华为题目)
- 记录一下自己常用的maven工程的pom.xml模板
- 记录一下自己最近对技术路线的感悟
- 从事it也十来年了,虽没什么大的建树,也有自己的一点心得体会,就当记录吧。
- 第一次开始入手React-Native ,记录一下自己遇到的坑
- 北理工java的试卷总结,我做了一下,发现也有许多以前没有理解的地方,现在再次记录下来
- 记录一下自己遇到的问题而已
- JSTree 更换图标的方法非常简单记录一下当初学的时候被难住了
- UVA 10020 简单贪心区间覆盖,各种WA,记录一下
- MVC 是什么?记录一下,欢迎讨论!
- 关于spring切面的一点理解,记录一下