Java泛型简单理解
优点1:
没有使用泛型,向list集合中添加非字符串,运行时会报错:类型不匹配
ObjectList.java:
package cn.nxl2018;
import java.util.ArrayList;
import java.util.List;
public class ObjectList {
public List getList() {
List list = new ArrayList();
list.add(new Integer(20));//此句会报错:类型不匹配
list.add("b");
list.add("c");
return list;
}
}
GenericityDemo.java:
package cn.nxl2018;
import java.util.List;
public class GenericityDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
ObjectList objectList = new ObjectList();
List list=objectList.getList();
String string = (String)list.get(1);
System.out.println(string);
}
}
使用泛型:
如果指定了list集合里放的是String类型的数据,在编辑代码的时候,add()方法处就会自动报错指出类型不匹配(下图所示)。也就是说当为list集合添加元素时,编译器会根据参数化类型来判断添加元素的数据类型是否合法,如果该类型是非参数化类型,编译器将给出错误提示信息。正常情况下这是在代码运行时才会提示异常错误,然而在编辑的时候就能提示出,很显然这加快了我们编程的效率。
优点2: 没有使用泛型的情况下,用get()方法获取list中的数据时,还需要进行数据转换,比较麻烦。
List list=objectList.getList();
String string = (String)list.get(1);//Object类型转换为String类型
如果使用泛型去指定获取数据的类型,那么在用get()获取list中的数据时,返回的值的类型直接就是指定的String类型,省去了将原始Object类型数据转换为String类型的麻烦。
List<String> list=objectList.getList();
String string = list.get(0);
附:为了普遍性,传统的List类的add()方法中的参数类型均是Objext类型,对应的get()返回值的类型也是Object类型。
关联CSDN博客:https://blog.csdn.net/m0_38022608/article/details/80197701
Java泛型简单理解的更多相关文章
- 对java泛型的理解
正确的应用java泛型的特性可以更好的实现编程的开闭原则(对扩展开放,对修改关闭),这得益于java泛型提供的在程序运行时获取对象声明类型的特性. 静态语言的特性是在程序编译前进行声明,这样程序在编译 ...
- Java泛型深入理解(转载)
原文地址 http://blog.csdn.net/sunxianghuang/article/details/51982979 泛型之前 在面向对象编程语言中,多态算是一种泛化机制.例如,你可以将 ...
- Java:泛型的理解
本文源自参考<Think in Java>,多篇博文以及阅读源码的总结 前言 Java中的泛型每各人都在使用,但是它底层的实现方法是什么呢,为何要这样实现,这样实现的优缺点有哪些,怎么解决 ...
- java泛型的理解
总体介绍泛型: 1.泛型是计算机程序中一种重要的思维方式,它将数据结构和算法与数据类型相分离,使得同一套数据结构和算法,能够应用于各种数据类型,而且还可以保证类型安全,提高可读性.在Java中,泛型广 ...
- Java泛型深入理解
泛型的优点: 泛型的主要优点就是让编译器保留參数的类型信息,执行类型检查,执行类型转换(casting)操作,编译器保证了这些类型转换(casting)的绝对无误. /******* 不使用泛型类型 ...
- 你对Java泛型的理解够深入吗?
泛型 泛型提供了一种将集合类型传达给编译器的方法,一旦编译器知道了集合元素的类型,编译器就可以对其类型进行检查,做类型约束. 在没有泛型之前: /** * 迭代 Collection ,注意 Coll ...
- 对于Java泛型的理解
源起:查看COLLECIOTNS类 Q1:为什么java需要泛型? 因为java对于对象类型的确认在编译期,那么强制类型转换就可以通过编译,但是运行时的错误却无法避免,那么泛型的存在可以避免强制类型转 ...
- java泛型简单学习
一. 泛型概念的提出(为什么需要泛型)? 首先,我们看下下面这段简短的代码: //import java.util.List; public class GenericTest { public st ...
- 关于Java泛型深入理解小总结
1.何为泛型 首先泛型的本质便是类型参数化,通俗的说就是用一个变量来表示类型,这个类型可以是String,Integer等等不确定,表明可接受的类型,原理类似如下代码 int pattern; //声 ...
随机推荐
- bzoj 2820 YY的GCD - 莫比乌斯反演 - 线性筛
Description 神犇YY虐完数论后给傻×kAc出了一题给定N, M,求1<=x<=N, 1<=y<=M且gcd(x, y)为质数的(x, y)有多少对kAc这种 傻×必 ...
- 学习Django,http协议,
学习Django http协议 规则 ''' http协议:超文本传输协议 ①基于TCP/IP协议基础上的应用层协议,底层实现仍为socket ②基于请求-响应模式:通讯一定是从客户端开始,服务器端接 ...
- nginx: [emerg] BIO_new_file("/etc/nginx/ssl_key/server.crt") failed (SSL: error:02001002:syste
Centos 7.5 nginx+web集群配置https报错 报错信息: [root@lb01 conf.d]# nginx -tnginx: [emerg] BIO_new_file(" ...
- C#开发者工具网
使用key值[123456]对[50cms]进行对称加密-在线DES对称加密/解密- 开发者工具网 http://tool.sufeinet.com/Encrypt/DesEncrypt.aspx? ...
- C# 基于任务的异步模式的创建与使用的简单示例
对于窗体程序,使用基于任务的异步模式需要用到Task类,下面示例下非常简单的用法. 1.创建一个拥有异步方法的类 该类拥有一个异步方法DoSomthingAsync,根据微软建议的命名规则该方法要带A ...
- Linux配置ssh服务和XShell连接Linux
SSH服务查看和安装,配置: https://www.cnblogs.com/qiuqiuqiu/p/6445426.html https://www.cnblogs.com/yunweis/p/77 ...
- 17秋 SDN课程 第四次上机作业
1.建立以下拓扑,并连接上ODL控制器. 2.利用ODL下发流表,使得h3在10s内ping不通h1,10s后恢复. 3.借助Postman通过ODL的北向接口下发流表,再利用ODL北向接口查看已下发 ...
- js判断数字、整数、字符串、布尔,特殊方法
整数: function isInteger(obj) { return Math.floor(obj) === obj } isInteger(3) // true isInteger(3.3) / ...
- python运维小技巧
以下实验均在Linux上进行 1.一秒钟启动一个下载服务器 python版本 python2: #python -m SimpleHTTPServer Serving HTTP on 0.0.0.0 ...
- python线程 有问题?
