Java泛型学习笔记 - (一)泛型的介绍
一、什么是泛型:
泛型的作用是用来规定一个类, 接口或方法所能接受的数据的类型. 就像在声明方法时指定参数一样, 我们在声明一个类, 接口或方法时, 也可以指定其"类型参数", 也就是泛型. 不同的是, 声明方法时我们给其参数指定一个值, 而给其泛型指定一个数据类型.
二、基本使用方式:
上面的概念啰嗦了许多, 其实我自己写的都累. 最简单有效的学习方法就是用一用嘛:
List<String> list = new ArrayList<String>();
这就规定了该List中只能存放String类型的数据. 但是有几点要注意:
- <>中放的必须是引用数据类型, 不能是基本数据类型如int, double;
- 前后的泛型必须一致. 如上面所示, 在声明时声明了一个List<String>, 在创建时也要new一个ArrayList<String>(), 而不能是ArrayList<Integer>()什么的, 既然有了这个规定, 因此在JDK1.7时就推出了一个新特性叫菱形泛型(The Diamond), 就是说后面的泛型可以省略直接写成<>, 反正前后一致, 如:
List<String> list = new ArrayList<>()
- 泛型可以是任何引用类型, 因此也可以定义为Object类型. 但是Object是所有数据类型的父类, 加了相当于没加, 没什么卵用.
三、使用泛型的好处:
- 提高安全性: 将运行期的错误转换到编译期. 如果我们在对一个对象所赋的值不符合其泛型的规定, 就会编译报错.
- 省去强转的麻烦: 比如我们在使用List时, 如果我们不使用泛型, 如:
List l = new ArrayList();
l.add("abc");
String s = (String) l.get(0);
当从List中取出元素时, 其类型会是默认的Object, 我们必须将其向下转型为String才能使用. 而使用泛型:
List<String> l = new ArrayList<>();
l.add("abc");
String s = l.get(0);
就可以保证存入和取出的都是String类型, 不必在进行cast了.
Java泛型学习笔记 - (一)泛型的介绍的更多相关文章
- [原创]java WEB学习笔记43:jstl 介绍,core库详解:表达式操作,流程控制,迭代操作,url操作
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- Java泛型学习笔记 - (六)泛型的继承
在学习继承的时候, 我们已经知道可以将一个子类的对象赋值给其父类的对象, 也就是父类引用指向子类对象, 如: Object obj = new Integer(10); 这其实就是面向对象编程中的is ...
- [原创]java WEB学习笔记13:JSP介绍(背景,特点,原理)
JSP介绍:(理解) 1)JSP背景 ①在很多动态网页中,绝大部分内容都是固定不变的,只有局部内容需要动态产生和改变: ②如果使用Servlet程序来输出只有局部内容需要动态改变的网页,其中所有的静态 ...
- Android(java)学习笔记167:Java中操作文件的类介绍(File + IO流)
1.File类:对硬盘上的文件和目录进行操作的类. File类是文件和目录路径名抽象表现形式 构造函数: 1) File(String pathname) Creat ...
- Android(java)学习笔记110:Java中操作文件的类介绍(File + IO流)
1.File类:对硬盘上的文件和目录进行操作的类. File类是文件和目录路径名抽象表现形式 构造函数: 1) File(String pathname) Creat ...
- Java基础学习笔记总结
Java基础学习笔记一 Java介绍 Java基础学习笔记二 Java基础语法之变量.数据类型 Java基础学习笔记三 Java基础语法之流程控制语句.循环 Java基础学习笔记四 Java基础语法之 ...
- 尚学堂JAVA基础学习笔记
目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...
- Kotlin for Java Developers 学习笔记
Kotlin for Java Developers 学习笔记 ★ Coursera 课程 Kotlin for Java Developers(由 JetBrains 提供)的学习笔记 " ...
- 20145213《Java程序设计学习笔记》第六周学习总结
20145213<Java程序设计学习笔记>第六周学习总结 说在前面的话 上篇博客中娄老师指出我因为数据结构基础薄弱,才导致对第九章内容浅尝遏止地认知.在这里我还要自我批评一下,其实我事后 ...
随机推荐
- spring+task配置
1.spring+task文件配置 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=& ...
- pycharm快捷键、常用设置、包管理
pycharm快捷键.常用设置.包管理 在PyCharm安装目录 /opt/pycharm-3.4.1/help目录下可以找到ReferenceCard.pdf快捷键英文版说明 or 打开pychar ...
- Linux下LVM
http://www.cnblogs.com/xiaoluo501395377/archive/2013/05/22/3093405.html
- contiki-定时器etimer
Contiki内核是基于事件驱动和Protothreads机制,事件既可以是外部事件(比如按键,数据到达),也可以是内部事件(如时钟中断).定时器的重要性不言而喻,Contiki提供了5种定时器模型, ...
- python3 文件增删查
#Author by Andy#_*_ coding:utf-8 _*_import sysimport timePath="E:\my python study\\files\haprox ...
- jq点击小图 弹出大图(更新版)
$(function(){ $(".fj1-consult").on("click",function(){ //设置弹框中图片的路径 $(".lay ...
- 【LeetCode】#344 Reverse String
[Question] Write a function that takes a string as input and returns the string reversed. Example: G ...
- 移动端设置字体px转换rem的脚本
(function (){ var _self = this; _self.width = 640;//设置默认最大宽度 _self.fontSize = 100;//默认字体大小 _self.wid ...
- Python 小练习
输出标题以及长度 结果 输出网页下方学校地理位置以及 输出"abcdefg"base64编码 输出网页内容的MD5 hash
- 聚光灯下的熊猫TV技术架构演进
2015年开始的百播大战,熊猫TV是其中比较特别的一员. 说熊猫TV是含着金钥匙出生的公子哥不为过.还未上线,就频频曝光,科技号,微博稿,站上风口浪尖.内测期间更是有不少淘宝店高价倒卖邀请码,光内测时 ...