Java泛型用于方法,类和接口

什么是泛型?

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

泛型的特点

  • 是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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/485451.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人机融合的科幻与现实

来源&#xff1a;《环球》杂志 发布时间&#xff1a;2017-04-24随着光机电一体化、生物工程、生化机器人的发展和系统科学的综合进步&#xff0c;计算机自主的逻辑思维将有足够的行为表现&#xff0c;进而真正脱离人类的完全控制&#xff0c;拥有自主的智能思维。几乎可以预见&…

js读取服务器上的txt文件,javascript – 每15秒读取一次文本文件的内容

您可以在函数中重复执行要执行的代码,并在setTimeout中传递该函数.setTimeout的第二个参数将以毫秒为单位.在这里使用setTimeout IMO在这里更合适,因为它将排除发送请求和接收响应所花费的时间.它将在收到响应后每5秒发送一次请求.$(document).ready(function() {function func…

Leetcode--128. 最长连续序列

给定一个未排序的整数数组&#xff0c;找出最长连续序列的长度。 要求算法的时间复杂度为 O(n)。 示例: 输入: [100, 4, 200, 1, 3, 2] 输出: 4 解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。 思路:存入map中&#xff0c;每次以当前元素为序列的第一个数字&#xff0…

Opencv级联分类器实现人脸识别

在本章中&#xff0c;我们将学习如何使用OpenCV使用系统相机捕获帧。org.opencv.videoio包的VideoCapture类包含使用相机捕获视频的类和方法。让我们一步一步学习如何捕捉帧 - 第1步&#xff1a;加载OpenCV本机库 在使用OpenCV库编写Java代码时&#xff0c;您需要做的第一步是使…

服务器的防火墙禁止了对指定通讯端口的访问,使用iptables限制访问网站指定端口...

Linux用得比较少&#xff0c;所以对iptables也不是很熟悉&#xff0c;最近部署网站&#xff0c;因为对外的80端口是通过nginx转发&#xff0c;而内部程序都是类似8080、3000之类的端口&#xff0c;不做处理的情况下&#xff0c;很可能会看到如:地址www.poorren.com、地址www.po…

RISC-V正在成为芯片世界中的Linux

来源&#xff1a;科技大本营芯片是信息技术的引擎&#xff0c;推动着人类社会的数字化、信息化与智能化。随着摩尔定律濒临终结&#xff0c;维持芯片技术创新面临挑战。开源芯片设计将是应对挑战的新思路。如今芯片设计动辄需要上亿研发费用、投入上百人&#xff0c;只有少数企…

细胞核起源于病毒?

撰文&#xff1a;Christie Wilcox来源&#xff1a;环球科学&#xff08;ID: huanqiukexue&#xff09;翻译&#xff1a;郑宸编辑&#xff1a;杨心舟细胞中&#xff0c;一个“病毒工厂”&#xff08;图中左侧大而圆的结构&#xff09;被其生产出来的新病毒颗粒&#xff08;若干小…

css3 固定,CSS3 calc()不适用于固定位置/绝对位置

编辑2&#xff1a;这是版本的Webkit浏览器(如询问意见)&#xff0c;与最新的Chrome测试版本&#xff0c;并且完全为我工作&#xff1a;http://jsfiddle.net/HvVst/1/使用-webkit-calc()而不是calc()。编辑&#xff1a;然后&#xff0c;你必须减去1px的边框到0.5em填充&#xff…

Leetcode--304. 二维区域和检索

给定一个二维矩阵&#xff0c;计算其子矩形范围内元素的总和&#xff0c;该子矩阵的左上角为 (row1, col1) &#xff0c;右下角为 (row2, col2)。 上图子矩阵左上角 (row1, col1) (2, 1) &#xff0c;右下角(row2, col2) (4, 3)&#xff0c;该子矩形内元素的总和为 8。 示例…

BZOJ4001 TJOI2015概率论(生成函数+卡特兰数)

设f(n)为n个节点的二叉树个数&#xff0c;g(n)为n个节点的二叉树的叶子数量之和。则答案为g(n)/f(n)。 显然f(n)为卡特兰数。有递推式f(n)Σf(i)f(n-i-1) (i0~n-1)。 类似地&#xff0c;左子树节点数为i时右子树有f(n-i-1)种情况&#xff0c;那么可以对左子树的叶子节点数之和计…

前沿|8种面部表情实时追踪,你的喜怒哀乐全被AI看穿了

来源&#xff1a;雷锋网与人类一样&#xff0c;AI也学会了“察言观色”有研究表明&#xff0c;人类在相似的社会环境下表达情感的面部表情几乎是相同的。如果一个人皱眉、嘟嘴、脸色涨红&#xff0c;你一定知道TA是在生气&#xff0c;现在AI同样能够“看穿”这一点。情感分析一…

css3 transform文字,CSS3 transform 字体模糊问题

使用 Vue Material 的 Dialog 做了一个弹出框&#xff0c;弹出框内动态绑定了几个数据&#xff0c;页面效果一出来What the fuck? 马赛克&#xff1f;Vue Material 的组件肯定没问题&#xff0c;应该自己代码哪问题&#xff0c;先把官网提供的例子在项目中运行了一下&#xff…

二分 poj 3273

题目链接&#xff1a;https://vjudge.net/problem/POJ-3273 把n个连续的数字划分成m个连续的部分&#xff0c;每个部分都有一个部分和&#xff08;这个部分所有值加起来&#xff09;&#xff0c;现在要使划分里最大的那个部分和最小。 我用的也是二分&#xff0c;用二分枚举最大…

MyBatis的配置

dao层的操作太麻烦 jdbc 连接数据库&#xff0c;释放空间什么的太烦了&#xff0c;为了简化&#xff0c;引入了MyBatis Mabatis可以简化JDBC操作&#xff0c;实现数据的持久化 Mabatis是一个ORM产品 ORM:Object Relational Mapping eg&#xff1a; person对象 p…

费曼:微积分是上帝的语言 | 书摘

莱布尼茨和牛顿&#xff0c;图片来自thegreatcoursesdaily.com来源&#xff1a; 赛先生制版编辑&#xff1a;Morgan撰文&#xff1a;史蒂夫斯托加茨&#xff08;美国康奈尔大学应用数学系教授&#xff09;没有微积分&#xff0c;我们就不会拥有手机、计算机和微波炉&#xff0c…

js纯ajax,自动完成JS类(纯JS, Ajax模式)

自动完成JS类(纯JS, Ajax模式)更新时间&#xff1a;2009年03月12日 23:51:15 作者&#xff1a;自动完成JS类&#xff0c;用户体验较好。封装成类&#xff0c;方便使用。本站一、 封装的JS文件//********************************************************//创建日期: 2009-03…

Leetcode--151. 翻转字符串里的单词

给定一个字符串&#xff0c;逐个翻转字符串中的每个单词。 示例 1&#xff1a; 输入: "the sky is blue" 输出: "blue is sky the" 示例 2&#xff1a; 输入: " hello world! " 输出: "world! hello" 解释: 输入字符串可以在前面或…

python opencv3 检测人

git&#xff1a;https://github.com/linyi0604/Computer-Vision 1 # coding:utf-82 3 import cv24 5 6 # 检测i方框 包含o方框7 def is_inside(o, i):8 ox, oy, ow, oh o9 ix, iy, iw, ih i 10 return ox > ix and ox ow < ix iw and oy oh < iy i…

朱松纯:AI从感知走向认知是必然趋势

来源&#xff1a;深度学习技术前沿1月28日&#xff0c;以"小数据、大任务"作为技术范式的强认知人工智能平台企业暗物智能科技&#xff08;以下简称“暗物智能”&#xff09;宣布&#xff0c;已于2020年年中完成5亿元人民币的A轮融资。本轮融资由赛领资本和吉富创投共…

五十个小技巧提高PHP执行效率

在项目开发过程中&#xff0c;经常遇到了一些PHP处理程序性能底下的情况&#xff0c;程序运行在centosnginx环境&#xff0c;虽然这个有很多的原因如&#xff1a;服务器本身配置&#xff0c;运行环境nginx服务&#xff0c;php-fpm配置等等&#xff0c;更多有一点仍然是PHPer没有…