2019-11-02-23:25:26

目录

  1.泛型的概念:

  2.泛型的定义和使用:

    2.1定义和使用含有泛型的类:

    2.2定义和使用含有泛型的方法:

    2.3定义和使用含有泛型的接口:


泛型的概念:

  泛型是一种未知的数据类型,当我门不知道使用什么数据类型的时候,可以使用泛型,泛型也可以看成是一个变量,用来接受数据类型

  E e:Element 元素

  T t:Type 类型

泛型的定义和使用:

  我们在集合中会大量使用到泛型,用来灵活地将数据类型应用到不同的类、方法、接口当中,将数据类型作为参数进行传递

  定义和使用含有泛型的类:

    修饰符 class 类名<代表泛型的变量>{ }

 package demosummary.generic;

 public class GenericClass<E> {
private E name; public GenericClass() {
} public GenericClass(E name) {
this.name = name;
} public E getName() {
return name;
} public void setName(E name) {
this.name = name;
} @Override
public String toString() {
return "GenericClass{" +
"name=" + name +
'}';
}
}
 package demosummary.generic;

 public class GenericClassTest {
public static void main(String[] args) {
//不写泛型则默认为Object类
GenericClass gc = new GenericClass();
gc.setName("默认为Object类");
Object obj = gc.getName();
System.out.println(obj); //使用泛型为Integer类
GenericClass<Integer> gci = new GenericClass<>();
gci.setName(1);
Integer integer = gci.getName();
System.out.println(integer);
}
}

  定义和使用含有泛型的方法:

    格式:修饰符<泛型> 返回值类型 方法名(参数列表(使用泛型)){

      语句体;

    }

  注意:含有泛型的方法,在调用方法的时候确定泛型的数据类型,传递什么类型的参数,泛型就是什么类型

 package demosummary.generic;

 public class GenericMethod {
//定义一个含有泛型的方法
public <E> void method(E e){
System.out.println(e);
} //定义一个含有泛型的静态方法
public static <M> void method01(M m){
System.out.println(m);
}
}
 package demosummary.generic;

 public class GenericMethodTest {
public static void main(String[] args) {
//创建一个GenericMethod对象
GenericMethod gm = new GenericMethod();
gm.method(1);//传入Integer类型
gm.method("字符串");//传入String类型
gm.method(1.1);//传入Float类型
gm.method(true);//传入Boolean类型 //静态方法建议通过类名调用
GenericMethod.method01(2);//传入Integer类型
GenericMethod.method01("静态方法");//传入String类型
}
}

  定义和使用含有泛型的接口:

    格式:

      修饰符 interface接口名<代表泛型的变量>{ }

    第一种使用方式:

      定义接口的实现类,实现接口,指定接口的泛型

    第二种使用方式:

      接口使用什么泛型,实现类就使用什么泛型,类跟着接口走

 package demosummary.generic;
//定义一个抽象类
public interface GenericInterface<E> {
//创建一个抽象方法
public void method(E e);
}
 package demosummary.generic;

 public class GenericInterface01 implements GenericInterface<String>{
//重写抽象方法
@Override
public void method(String s) {
System.out.println(s);
}
}
 package demosummary.generic;

 public class GenericInterface02<E> implements GenericInterface<E>{
//重写抽象类中的抽象方法
@Override
public void method(E e) {
System.out.println(e);
}
}
 package demosummary.generic;

 public class GenericInterfaceTest {
public static void main(String[] args) {
//创建一个GenericInterface01对象,指定实现类泛型为String类型
GenericInterface01 gi01 = new GenericInterface01();
gi01.method("泛型指定为字符串"); //创建一个GenericInterface02对象,接口泛型为Integer类型,实现类也为Integer类型
GenericInterface02<Integer> gi02 = new GenericInterface02<>();
gi02.method(2); //创建一个GenericInterface02对象,接口泛型为String类型,实现类也为String类型
GenericInterface02<String> gi021 = new GenericInterface02<>();
gi021.method("接口为什么泛型,实现类就是什么泛型");
}
}

Java之路---Day16(泛型)的更多相关文章

  1. 《徐徐道来话Java》(2):泛型和数组,以及Java是如何实现泛型的

    数组和泛型容器有什么区别 要区分数组和泛型容器的功能,这里先要理解三个概念:协变性(covariance).逆变性(contravariance)和无关性(invariant). 若类A是类B的子类, ...

  2. Python之路,Day16 - Django 进阶

    Python之路,Day16 - Django 进阶   本节内容 自定义template tags 中间件 CRSF 权限管理 分页 Django分页 https://docs.djangoproj ...

  3. Java之路——名词解释(一)

    一.开篇 许多人在初接触Java的时候,都会被各种Java的英文缩写名词给弄得头晕脑胀.看一个技术,内容里又会有一堆其他的技术名词,看了半天不知所云.尝试去查一下这些名词的解释,除了非常学术性的解释之 ...

  4. Java之路——敬JAVA初学者(作者:MoMo)

    作为一名大四的毕业生,大学三年过,有得有失.作为一个喜欢编程,喜欢JAVA的人,自学其实是一件美事,很有意思的事.要是能再找个女朋友一起学.嘿嘿,就不枉在大学走了一遭啊!    要离开学校了,还是想留 ...

  5. Java之路——环境配置与编译运行

    本文大纲 一.开篇 二.JDK下载 三.JDK安装 四.环境配置 五.初识Java编译 六.Java与Javac 七.第一个Java程序 八.总结 九.参考资料 一.开篇 通过对之前Java之路的了解 ...

  6. Java之路 ——初识Eclipse

    零.大纲 一.前言 二.获取Eclipse 三.运行Eclipse 四.创建及运行第一个Java Project 五.界面介绍 六.如何调试 七.获取插件 八.Eclipse 快捷键 九.总结 一.前 ...

  7. JAVA提高六:泛型

    在面向对象编程语言中,多态算是一种泛化机制.例如,你可以将方法的参数类型设置为基类,那么该方法就可以接受从这个基类中导出的任何类作为参数,这样的方法将会更具有通用性.此外,如果将方法参数声明为接口,将 ...

  8. 【原】Java学习笔记027 - 泛型

    package cn.temptation.test; import java.util.ArrayList; import java.util.Iterator; public class Samp ...

  9. Java Collections API和泛型

    Java Collections API和泛型 数据结构和算法 学会一门编程语言,你可以写出一些可以工作的代码用计算机来解决一些问题,然而想要优雅而高效的解决问题,就要学习数据结构和算法了.当然对数据 ...

随机推荐

  1. Windows下 gcc/g++的安装与配置

    引言 我们知道开发最好用Mac/Linux,效率很高,但是对于很多还是Windows用户的我们来说,编写代码再到linux上运行也是很常有的事情,但对于我们写一些小demo使用上面的流程难免有点兴师动 ...

  2. find命令通过排序只保留最新的文件目录

    find /usr/local/canal/logs/example -type d -name "*-*" | sort -nr | awk '{if (NR>=2){pr ...

  3. WebLogic任意文件上传漏洞复现与分析 -【CVE-2018-2894 】

    CVE-2018-2894 漏洞影响版本:10.3.6.0, 12.1.3.0, 12.2.1.2, 12.2.1.3 下载地址:http://download.oracle.com/otn/nt/m ...

  4. GBT22239-2008-等保1.0三级要求

    第三级基本要求 7.1 技术要求 7.1.1 物理安全 7.1.1.1 物理位置的选择(G3) 本项要求包括: a)   机房和办公场地应选择在具有防震.防风和防雨等能力的建筑内: b)   机房场地 ...

  5. C语言中的volatile关键字简介

    C语言中的volatile关键字简介: (1)含义:         volatile关键字的意思是可能会被外来的意想不到的改变.它的作用是:优化器在使用该关键字定义的变量时,直接从内存中读取原始的数 ...

  6. [Linux] 使用mount来挂载设备到目录

    一般情况下直接mount 设备路径 目录路径,就可以了.umount 设备名,就可以卸载这个设备了使用lsblk -f可以查看挂载的设备,以及这些设备的文件系统. root@tao-PC:/boot# ...

  7. B/S架构与C/S架构(略讲)

    B/S架构基本概念 B/S是Browser/Server,即浏览器/服务器架构.Browser指的是Web浏览器,极少数事务逻辑在前端实现,但主要事务逻辑在服务器端实现. B/S三层体系结构可以定义为 ...

  8. nginx目录详解

  9. 使用 IDEA 翻译插件

    使用 IDEA 翻译插件 1.安装 在IDEA插件中搜索 translation根据下载量排序有个完全匹配名称的插件,下载,重启 2.配置翻译插件 都是中文,就不说了

  10. springboot中的照片上传工具类

    public class UploadImgUtils { private static String savePath = ""; /** * 上传照片工具类 * * @para ...