什么是泛型?

  型就是数据类型参数化。就是说原本定死的数据类型像方法中的形参一样,数据是不确定的,使用的时候由人传进去,泛型就是这样,数据类型不确定了。使用的时候再确定就可以了。

泛型的特点

  • 是JDK1.5的新特性
  • 泛型可以使用在方法上,类上,接口上
  • 泛型变量可以理解为是某种数据类型的占位符
  • 泛型变量也可以理解为是某种数据类型的变量
  • 泛型变量的命名规则,只要是合法的标识符就可以,一般使用一个大写字母标识

好了,讲了一点点,现在来看一下泛型实际运用是怎么样的。实际上呢泛型是一个很好用的东西,例如我们都会用的ArrayList链表   ArrayList<T> 链表名 = new ArrayList;里面的  T  就是泛型的使用方法,大家有兴趣可以去看一下ArrayList的源代码。

泛型在方法中的用法

  定义方法:修饰符 <T> 返回值类型 方法名(参数列表){}

  public static void main(String[] args) {    String s = "123456";    int i = 123456;String str = test01(s);Integer in = test01(i);}public static <T> T test01(T param){//<T>这个是确定泛型的标识符。。后面那个T是返回值类型!!!一定要记住return param;}

  你看这样子就可以将不同数据类型的数据传给同一个方法,就不需要方法重写了,减少很多工作量的说。然后注意一点,那就是泛型不能使用基本数据类型。只能使用基本数据类型的包装类,比如ArrayList,我们放int类型时是怎么放的   ArrayList<Integer> arr = new ArrayList()<>;在建对象使用泛型时注意一下

泛型在类中的用法

  说实在的,类为什么类也要定义成泛型我也没怎么想到,确实觉得感觉有点好处,又感觉没什么好处。我有时间去查看一下吧。

泛型类的定义格式:

泛型类定义格式    class 类名<T>{   //可以将泛型变量T当成一种数据类型使用  }

public class changeArr<T>{//定义泛型类public static <T> void reverse(T[] arr){//里面定义一个泛型方法for (int i = 0,j = arr.length - 1; i < j ; i++,j--) {T temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}
}public static void main(String[] args){Integer[] arr = {1,3,4,7,9} ;String[] strs = {"a","b","c"};
    changeArr<Integer> arrays01 = new changeArr<>(); //使用泛型类创建,创建的时候指定数据类型    arrays01.reverse(arr);//使用泛型方法       System.out.println(arrays02.toString(arr));
changeArr<String> arrays02 = new changeArr<>();arrays02.reverse(strs);System.out.println(arrays02.toString(strs));//好烦啊,为什么这个粘贴复制自己的都会格式乱掉}

  emmmm,因为这个用的比较少,所有感觉没有什么要注意的。。。

泛型定义接口

  这个有老哥和我说很重要,我感受了一下,确实很重要的说!!!

  泛型接口的定义格式  interface 接口<T>{ //在接口中可以把T当成一种数据类型使用 }

  泛型接口的实现方式
  方式1:实现接口的同时指定泛型变量的具体数据类型
  方式2:实现接口时不指定泛型变量的具体数据类型,将实现类定义为泛型类,由创建实现类对象者指定泛型变量的具体数据类型//为什么说重要的原因,就是这个!!!

特地说多一点,因为实际操作中我们会遇到很多东西,但其实有一些东西都是重复的,就比如在ssm中的超多实现类,其实比如通过id查找该物品什么的,每个表的实现定义一个,现在有了泛型就不用那么惨了,直接调用,反正就算是类的数据类型也可以使用,很爽的说。。。果然师兄说的对,写接口是最痛苦的。用接口是最舒服的!!!

     class Student{}public interface Dao<T>{//泛型接口public void save(T t);public void delete(int id);public void update(T t);public void find(int id);}//实现层代码 指定实现类具体数据类型public class StudentDao implements Dao<Student>{//对四个类进行重写}//实现层代码 不指定实现类具体数据类型,比较灵活public class BaseDao<T> implements Dao<T>{//对四个类进行重写}//main中实现public static void main(String[] args) {BaseDao<Student> baseDao1 = new BaseDao<>();}//格式懒的调了,大家凑合着看吧感受一下就就知道了,这个是真滴好用

  

转载于:https://www.cnblogs.com/phoenlix/p/9439318.html

Java泛型用于方法,类和接口相关推荐

  1. Java泛型教程–示例类,接口,方法,通配符等

    泛型是Java编程的核心功能之一,它是Java 5中引入的.如果您使用的是Java Collections ,并且版本5或更高版本,则可以肯定使用了它. 在集合类中使用泛型非常容易,但是它提供了比仅创 ...

  2. java泛型方法 通配符_Java泛型教程–示例类,接口,方法,通配符等

    java泛型方法 通配符 泛型是Java编程的核心功能之一,它是Java 5中引入的.如果您使用的是Java Collections ,并且版本5或更高版本,则可以肯定使用了它. 将泛型与集合类一起使 ...

  3. IEnumeratorTItem和IEnumerator Java 抽象类和普通类、接口的区别——看完你就顿悟了...

    IEnumerable 其原型至少可以说有15年历史,或者更长,它是通过 IEnumerator 来定义的,而后者中使用装箱的 object 方式来定义,也就是弱类型的.弱类型不但会有性能问题,最主要 ...

  4. jdbc是java语言编写的类和接口_JDBC——Java语言连接数据库的标准

    JDBC概述 API JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Jav ...

  5. java泛型与接口_Java泛型用于方法,类和接口

    什么是泛型? 型就是数据类型参数化.就是说原本定死的数据类型像方法中的形参一样,数据是不确定的,使用的时候由人传进去,泛型就是这样,数据类型不确定了.使用的时候再确定就可以了. 泛型的特点 是JDK1 ...

  6. java泛型--桥方法

    看桥方法之前,我们先来看看泛型中类型擦除的概念: 在<java核心卷书卷1>中有这样一段描述: 虚拟机没有泛型类型对象--所有对象都属于普通类.也就是说,虚拟机在执行代码的时候,都会把泛型 ...

  7. Java基础-day06-抽象类和接口

    抽象类 概述: 使用abstract关键字修饰的类就是抽象类 特点: 这种类不能被创建对象,它就是用来做父类的,被子类继承的 格式 修饰符 abstract class 类名{} 抽象类中的成员 成员 ...

  8. java封装对象实体类_Java 接口自动化系列--实体类之entity封装

    实体包entity下面有4个类,主要存放java对象,每个类必须有私有属性,空参构造,get set方法 具体excel中数据信息见---工具类excel文章 1.API类 解析excel中接口信息的 ...

  9. 开课吧Java教程什么是类集接口

    类集框架定义了几个接口.本节对每一个接口都进行了概述.首先讨论类集接口是因为它们决定了collection类的基本特性.不同的是,具体类仅仅是提供了标准接口的不同实现.支持类集的接口总结在如下的表中: ...

最新文章

  1. LeetCode简单题之二叉树的层平均值
  2. Intellij IDEA的下载和使用(针对学生的免费使用计划)
  3. html点击按钮删除session,Asp.net中安全退出时清空Session或Cookie的实例代码
  4. ubuntu 14.04:Error found when loading /root/.profile
  5. MySQL写十行_python 十行代码系列(四):操作mysql插入测试数据
  6. 字符串-文本对齐方法演练
  7. WIN7情况下VMWARE虚构机中Microsoft Windows XP Professional 2002 Service Pack2与win7共享文件的编制:
  8. 成都至柬埔寨金边定期直飞航线开通
  9. 第二百五十八天 how can I 坚持
  10. linux系统中归档管理器,深度商店应用归档管理器、KShutdown、7-Zip、California
  11. ES(二)| 安装ES、Kibana、IK分词器、拼音分词器(自动补全)
  12. java 批量读取excel表格内容_java 使用POI批量导入excel数据
  13. java毕业设计——基于java+Servlet+jsp的网上花店销售系统设计与实现(毕业论文+程序源码)——网上花店销售系统
  14. 键盘的 SysRq按键使用详解
  15. 用cxf开发一个可以被安卓调用的接口
  16. 福利 | CarBlock 开启「区块链+车联网」数据应用新时代
  17. 制作强制删除文档 删除已损坏的文件
  18. 仿钉钉时事通讯IM客户端
  19. bios设置 联想m8000t_联想M8000T系统重启解决办法
  20. 秋季锻炼“十大法宝”

热门文章

  1. 奥鹏20春在线作业c语言,电子科20春《C语言(专科)》在线作业3答案
  2. python迭代算法_Python实现简单的梯度下降法
  3. [AssertionError: nput tensor input format are different]
  4. 电脑故障扫描修复软件_电脑故障分析:电脑安装软件提示没有权限的解决方法...
  5. Packet Tracer 5.0 建构 CCNA 实验攻略——配置单区域 OSPF
  6. 04.卷积神经网络 W3.目标检测
  7. LeetCode 第 34 场双周赛(385/2842,前13.5%)
  8. [Kaggle] Heart Disease Prediction
  9. 程序员面试金典 - 面试题 17.17. 多次搜索(Trie树)
  10. docker $PWD路径_Docker 技术系列之安装Redis单机版和集群版