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. LD_PRELOAD & putenv() 绕过 disable_functions & open_basedir

    这次TCTF中一道题,给出了一个PHP一句话木马,设置了open_basedir,disable_functions包含所有执行系统命令的函数,然后目标是运行根目录下的/readflag,目标很明确, ...

  2. 版本管理·玩转git(推到远程仓库)

    经过前面的练习,你在本地的仓库里管理代码已经比较熟练了,但如果是团队开发呢,如何配合起来呢? 我们可以把版本仓库放在互联网上,开发者把自己最新的版本推到线上仓库,同时,把线上仓库的最新代码拉到自己本地 ...

  3. Day_05

    01.error接口的使用 package main import "fmt" import "errors" func main() { //var err1 ...

  4. Day_04 面向对象

    概述 对于面向对象编程的支持,Go语言设计得非常简洁而优雅.因为,Go语言并没有沿袭传统 面向对象编程中的诸多概念,比如继承(不支持继承,尽管匿名字段的内存布局和行为类似继承,但它并不是继承). 虚函 ...

  5. DRF的基本使用(一)

    本帖最后由 杰哥,我就服你 于 2018-12-20 13:22 编辑 Django rest framework(DRF) D:是一个用于构建Web API强大又灵活的框架,基于Django框架二次 ...

  6. (转)深入浅出JWT(JSON Web token)

    转载地址:https://www.cnblogs.com/mantoudev/p/8994341.html 参考地址:https://baijiahao.baidu.com/s?id=16080218 ...

  7. [C11] 推荐系统(Recommender Systems)

    推荐系统(Recommender Systems) 问题阐述(Problem Formulation) 将 推荐系统 纳入这门课程来讲有以下两个原因: 第一.仅仅因为它是机器学习中的一个重要的应用.在 ...

  8. 剑指Offer-6.旋转数组的最小数字(C++/Java)

    题目: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素.例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转, ...

  9. 【BZOJ3171】[TJOI2013] 循环格(网络流)

    点此看题面 大致题意: 给你一个循环格,每个格子有一个方向.问你至少修改多少格子,才能使从每个格子出发都能回到原格子. 建图 这是道网络流题目,主要就是考虑如何建图. 我们可以把每个点拆成两个点,一个 ...

  10. STM32移植ROS--发布超声波信息

    前言:之前ROS跟单片机的底层通讯主要是通过串口自定的协议来做,比如官网提供的arduino串口驱动一样,需要ROS往下发一个指令,单片机再回传一个指令,要写一大堆的协议,这样很麻烦,效率也比较低, ...