[TOC]

# 泛型

## 为什么要使用泛型

在之前学过的集合框架中,List和Map都使用了泛型技术来确认其内容的数据类型。

如果不使用泛型,在程序运行阶段,会带来数据类型转型的错误风险。

~~~

List list = new ArrayList();

list.add("tom");

for (int i = 0; i < list.size(); i++) {

String obj = list.get(i);

System.out.println(obj);

}

List list2 = new ArrayList();

list2.add("helen");

list2.add(2); // 自动装箱成Integer

list2.add(true); // 自动装箱成Boolean

for (int i = 0; i < list2.size(); i++) {

String obj = (String)list2.get(i); // 此处是有风险的

}

~~~

在Java中,使用变量之前,必须要先定义变量的数据类型,存在一种特殊的现象,就是多态(数据类型是父类,实现对象是子类),变量赋值不一定要完全和数据类型一致,可以赋予子类对象给它。

~~~

public class Client2 {

public static void main(String[] args) {

Point point = new Point();

point.x = "东经102°";

point.y = "北纬32°";

point.x = 102;

point.y = 32;

String s = (String) point.x;

point.print();

}

}

class Point {

Object x;

Object y;

public void print() {

System.out.println(x + "" + y);

}

}

~~~

> 向下转型会带来数据风险的(ClassCastException)

## 泛型使用

~~~

public class Client3 {

public static void main(String[] args) {

Point3 p3 = new Point3();

p3.x = 1;

p3.x = 2;

}

}

class Point3 {

T1 x;

T2 y;

}

~~~

**泛型定义**:名字要符合标识符定义的规范,但是我们一般使用大写字母定义,T(一般的泛型类型) E(异常的泛型类型) K V (键值对的泛型类型)

类的泛型在className之后定义,只有定义的泛型类型才能在类中使用。

> 泛型一般使用于框架设计,在实际的应用开发中较少运行。

java泛型和注解,泛型 · 注解和泛型 · 看云相关推荐

  1. Java泛型,枚举,注解

    Java泛型,枚举,注解 1 泛型 1.1 什么是泛型 泛型:即参数化类型.在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型.允许在定义类.接口时通过一个标识表示类中某个属性的 ...

  2. java 获取泛型t的class_阿里巴巴都鼎力推荐的java基础之集合其他内容和泛型3

    第三节 泛型 3.1为什么需要泛型 没有采用泛型之前 1.不安全:添加元素是无检查 宽进 2.繁琐:获取元素时需要强制类型转换 严出 采用泛型之后 1.安全 严进 2.简单 宽出 3.2什么是泛型ge ...

  3. 【Java 泛型】泛型用法 ( 泛型类用法 | 泛型方法用法 | 泛型通配符 ? | 泛型安全检查 )

    文章目录 一.泛型类用法 二.泛型方法用法 三.泛型通配符 <?> 四.泛型安全检查 五.完整代码示例 1.泛型类 / 方法 2.main 函数 一.泛型类用法 泛型类用法 : 使用时先声 ...

  4. 【Java 泛型】泛型简介 ( 泛型类 | 泛型方法 | 静态方法的泛型 | 泛型类与泛型方法完整示例 )

    文章目录 一.泛型简介 二.泛型类 三.泛型方法 四.静态方法的泛型 五.泛型类与泛型方法完整示例 一.泛型简介 泛型 可以 简单理解为 参数化类型 , 主要作用在 类 , 方法 , 接口 上 ; j ...

  5. 我丢,去面试初级Java开发岗位,被问到泛型?

    1.泛型的基础概念 1.1 为什么需要泛型 List list = new ArrayList();//默认类型是Objectlist.add("A123");list.add(& ...

  6. Java通过Class的对象来获取泛型的class示例

    转载自  Java通过Class的对象来获取泛型的class示例 在使用spring的JdbcTemplate实现DAO的时候,经常会用到一个类ParameterizedBeanPropertyRow ...

  7. java使用泛型后消除泛型_如何以及何时使用泛型

    java使用泛型后消除泛型 本文是我们名为" 高级Java "的学院课程的一部分. 本课程旨在帮助您最有效地使用Java. 它讨论了高级主题,包括对象创建,并发,序列化,反射等. ...

  8. Java泛型(1)--集合使用泛型Generic、自定义泛型、泛型在继承上的体现、通配符的使用

    文章目录 泛型的概念 集合中使用泛型 自定义泛型结构 泛型在继承上的体现 通配符的使用 泛型的概念 集合容器类在设计阶段/声明阶段不能确定这个容器实际存的是什么类型的对象,所以在JDK1.5之前只能把 ...

  9. java 泛型 父子_使用通配符和泛型:完成父子类关系的List对象的类型匹配

    泛型和通配符 使用泛型和通配符都可以让一个方法所表示的算法逻辑适应多种类型. Java中具备继承关系的类A.B(A extends B)它们的集合List和List之间是没有继承关系的, 可以使用泛型 ...

  10. java 泛型的上限与下限、泛型通配符、泛型上下限

    java 泛型的上限与下限 设置泛型对象的上限使用extends,表示参数类型只能是该类型或该类型的子类: 声明对象:类名<? extends 类> 对象名 定义类:类名<泛型标签 ...

最新文章

  1. Ubuntu 16.04安装双显卡驱动方法收集
  2. Git Gui for Windows的建库、克隆(clone)、上传(push)、下载(pull)、合并(转)
  3. java B2B2C 源码多租户电子商城系统-Spring Cloud组件详解
  4. python培训比较好的机构-学Python去哪家培训机构比较好?
  5. eplan单线原理图多线原理图_【原创分享】西门子PLC电路图高效设计——基于EPLAN与TIA Selection...
  6. 如何把c语言程序的数据导出到文档,急求如何将下列C语言程序数据存储到文件中?...
  7. Linux学习总结(19)——Linux中文本编辑器vim特殊使用方法
  8. [MyBatis]诡异的Invalid bound statement (not found)错误
  9. 【ArcGIS|空间分析|网络分析】5 计算服务区和创建 OD 成本矩阵
  10. 超赞!UX写手必备技能
  11. SQL语句- 条件查询
  12. 用Java弹个Freepiano钢琴《The truth that you leave》
  13. 华硕新主板打开核心显卡开关以支持核心显卡不被屏蔽,然后就可以装核显驱动了
  14. nginx日志中$request_body 十六进制字符(\x22\x9B\x5C\x09\x08...)完美解决方案
  15. Opengl三视图的坐标变换
  16. Linux常用命令个人记录
  17. Dota对我来说是什么?
  18. iOS开发:2017苹果开发者账号申请流程
  19. 考研英语十附双语阅读:按点下班惹非议?一点小花招让你看起来超努力(纯阅读,有些方法不普适)
  20. 【视频笔记】华中农业大学-分子生物学:P7-基因的结构 1

热门文章

  1. php将字符变为数字,数字字符怎么转化为数字 php 怎么将字符转成数字
  2. 搭建云计算机win10,win10电脑做云服务器
  3. python 字符串函数 center_Python字符串处理
  4. Java StringBuilder length()方法与示例
  5. date.gethour_Java LocalDateTime类| 带示例的getHour()方法
  6. scala 字符串占位符_如何在Scala中将带有换行符的字符串转换为字符串列表?
  7. Java中不可或缺的59个小技巧,贼好用!
  8. MS SQL查询库、表、列数据结构信息汇总
  9. Docker Registry 删除镜像并清理
  10. Python 代码优化常见技巧