1泛型引入目的:

解决对于两个或多个对象的所有逻辑都一样,只有对象中的某些成员变量的类型不一样

例如:一个类Person成员变量(String name,int age),这时候你想创建一个对象person1(String name,int age)和person2(String name,String age)//(仅仅age的类型不同),

(三种方法)

1.你可以创建多个Person类(导致类的膨胀,重用性差)

2.你可以将类Person的age类型设为Object 类型。这个方法其实不错,但是在你在实例化对象Person person=new Person; person.age=18;,之后你(String)person.age强转的时候编译通过,但在运行的时候出错(安全性问题)

3.你可以引入泛型Person<T>成员变量(String name,T age)//T就是泛型,这时候你在实例化的时候就可以 Person<Integer> person1 = new Person<Integer>();。这时候(T=Integer),即person1.age 的类型就是Integer类型,Person<String> person2 = new Person<String>();的类型person1.age的类型是String类型。这时你强转的时候,编译的时候就不让通,过解决了2的问题。

2基本用法:

class Person<T>{

String name;

T age;

public void printIfo(){

System.out.println(name + age);

}

}

public class GenClassDemo {

public static void main(String[] args) {

Person<Integer> person1 = new Person<Integer>();

person1.age=18;

person1.name ="小明";

person1.printIfo();

System.out.println(">>>>>>>>>>>>>>>>>>>>>>>");

Person<String> person2 = new Person<String>();

person2.age="18岁";

person2.name ="小明";

person2.printIfo();

}

}

3泛型的特点:

  1. 泛型的类型参数可以是泛型类

    例:(人)Person<T>(T t,String name)和(枪)Gun<T>(T name)

    Person<Gun<String>> person = new Person<Gun<String>> ();

    可以理解为Person<T>属性T是Gun;Gun<T>的T是String。

  2. 同时设定多个类型参数

    例:Person<K,T...>(K name,T age...)

    Person<String,Integer> person;

    即K是String,T是Integer,name是String类型,age是Integer类型

  3. 泛型的继承

    例:(人)Person<T>(T name)  (老师)Teacher<K,V>(K name,V other)

    class Teacher<K,V> extends Person<T>

    在<>中的位置对应Teacher的K 继承Person的T; V是你想要扩展属性

  4. 泛型类可以实现泛型接口

    Interface Print<T>{

    void show(T t);

    T get();

    }

  5. 限制可用类型

    父类(武器)Weapon

    子类(枪)Gun(刀)Knife(盾)Shield

    Person<? extend Weapon>

    意思是?是继承Weapon的类型

    这时候Person<T> T只能是Weapon、Gun、Knife和Shield,其他类型都不行

    Person<? super Gun>

    这时候Person<T> T只能是Gun、Weapon即其父类,其他类型都不行

Java SE菜鸟之泛型相关推荐

  1. Java SE菜鸟之异常

     Java SE菜鸟之异常 1异常引入: 程序在运行过程发生不正常的事件,Java中有异常封装类封装了异常信息.如果不处理异常的话程序崩溃中断,处理这些异常便可以使程序继续运行下去 异常分类: 受 ...

  2. 《java基础》-胖菜鸟说泛型

    先扯两句   转眼之间距离上次发类.抽象类.接口已经过去了不知道多少个日夜了,原以为在博客中已经暗示的不能再明显了.可结果呢,几篇博客发出去了,别说找女朋友了,就连赞都没得到几个,在孤寂的夜自己的眼泪 ...

  3. Java SE进阶知识

    一.集合 不管使用什么语言编程,编程在做的事情(编程的本质)都是一样的,那就是设计算法和数据结构(程序 = 算法 + 数据结构),算法是一个程序的操作步骤(即这个进程在CPU上的计算和执行顺序),数据 ...

  4. 零基础学JAVA]Java SE基础部分-01. Java发展及JDK配置

    1.课程名称:Java发展及JDK配置 本季介绍了JAVA的发展过程,包括JDK的发展历程,path路径的配置和classpath的配置及作用.并简单讲解了一个简单的JAVA程序,并通过此程序讲解了J ...

  5. Java笔记14:泛型初探

    一.泛型简介 泛型是从Java SE 1.5开始出现的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数.这种参数类型可以用在类.接口和方法的创建中,分别称为泛型类.泛型接口.泛 ...

  6. 面试必会系列 - 1.1 Java SE 基础

    本文已收录至 github,完整图文:https://github.com/HanquanHq/MD-Notes Java SE 基础 面向对象 Java 按值调用还是引用调用? 按值调用指方法接收调 ...

  7. Java SE 11:推动Java向前发展

    介绍 在我看来,这篇文章提出了Java语言应该如何发展以保持其作为首选语言的地位. 它还提供了一些我喜欢但有时(可能永远不会)成为Java一部分的功能,由于我将要解释的某些原因,这些功能有时我已经爱上 ...

  8. Java Se相关测试题(偏线程、集合)含答案及详解

    Java Se相关测试题(偏线程.集合)(简答.编程)含答案及详解 一.选择.简答题 二.编程题 (编程答案有很多思路,实现方式不同,如果有不同见解可打在评论区或私信) 一.选择.简答题 1.publ ...

  9. [零基础学JAVA]Java SE应用部分-35.JAVA类集之二

    JAVA按以下重要顺序 · 面向对象 · 类集框架 · JDBC · 文件编程 本季目标 主要讲解以下的内容: · Collection · List · Set · Map · Iterator · ...

最新文章

  1. 洛谷P1006 传纸条 (棋盘dp)
  2. Data Protection Manager 2010 系列之安装部署
  3. python同步异步_python中Tornado的同步与异步I/O的介绍(附示例)
  4. [XA]转:一个关于结对编程(Pair Programming)的讲义
  5. oracle 分割取值,oracle中的分割函数(split效果)
  6. axios拦截器的实现
  7. 使用WebBenchmark对webapi进行管理和性能测试
  8. html隐藏块元素过度动画,CSS3实现DIV图层隐藏到显示的过渡效果
  9. webpack 保存文件后自动打包_继webpack后又一打包神器Parcel
  10. 赋值运算符(AssignmentOperator)
  11. L2-018. 多项式A除以B -PAT团体程序设计天梯赛GPLT
  12. ubuntu中wine的安装位置
  13. 通过源码理解反射与注解是什么东西?
  14. map slice综合示例 go语言
  15. 开发者论坛一周精粹(第六十三期) WHM自动脚本修复ssh问题
  16. 【Android -- 学习】学习资料汇总
  17. windows下IOS证书制作,IOS证书在线制作
  18. 我的世界 Unity3D MineCraft 用Unity3D制作类似MineCraft我的世界的游戏 洞穴算是完成了
  19. 使用python统计excel两文件数据,excel公式为countif
  20. CallBack函数调用

热门文章

  1. APUE学习的经验(引以为戒)
  2. Layui的layer.confirm弹框用法,很详细
  3. 以太网通信,UDP通信
  4. 1、Linux下搭建研究live555的开发环境
  5. 成都智慧工地系统_智慧工地平台指导方案
  6. 目标检测-Oriented RepPoints for Aerial Object Detection(CVPR 2022)
  7. 过来人:软件测试自学还是报班好?需要掌握哪些技能?
  8. 分区 与 bios 笔记本 tips
  9. 5G NR标准 第1章 什么是5G
  10. 七年级计算机课计划,初中信息技术教学计划范文(通用5篇)