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

什么是泛型?

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

泛型的特点

是JDK1.5的新特性

泛型可以使用在方法上,类上,接口上

泛型变量可以理解为是某种数据类型的占位符

泛型变量也可以理解为是某种数据类型的变量

泛型变量的命名规则,只要是合法的标识符就可以,一般使用一个大写字母标识

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

泛型在方法中的用法

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

public static void main(String[] args) {

String s = "123456";

int i = 123456;

String str = test01(s);

Integer in = test01(i);

}

public static T test01(T param){//这个是确定泛型的标识符。。后面那个T是返回值类型!!!一定要记住

return param;

}

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

泛型在类中的用法

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

泛型类的定义格式:

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

public class changeArr{//定义泛型类

public static 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 arrays01 = new changeArr<>(); //使用泛型类创建,创建的时候指定数据类型

arrays01.reverse(arr);//使用泛型方法

System.out.println(arrays02.toString(arr));

changeArr arrays02 = new changeArr<>();

arrays02.reverse(strs);

System.out.println(arrays02.toString(strs));//好烦啊,为什么这个粘贴复制自己的都会格式乱掉

}

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

泛型定义接口

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

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

泛型接口的实现方式

方式1:实现接口的同时指定泛型变量的具体数据类型

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

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

class Student{}

public interface Dao{

//泛型接口

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{

//对四个类进行重写

}

//实现层代码 不指定实现类具体数据类型,比较灵活

public class BaseDao implements Dao{

//对四个类进行重写

}

//main中实现

public static void main(String[] args) {

BaseDao baseDao1 = new BaseDao<>();

}//格式懒的调了,大家凑合着看吧感受一下就就知道了,这个是真滴好用

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

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

相关文章

unix系统编码 java_JAVA字符编码系列三:Java应用中的编码问题

这两天抽时间又总结/整理了一下各种编码的实际编码方式&#xff0c;和在Java应用中的使用情况&#xff0c;在这里记录下来以便日后参考。为了构成一个完整的对文字编码的认识和深入把握&#xff0c;以便处理在Java开发过程中遇到的各种问题&#xff0c;特别是乱码问题&#xff…

Java 捕获 mybatis异常_3 springboot集成mybatis和全局异常捕获

mybatis有两种方式&#xff0c;一种是基于XML&#xff0c;一种是基于注解springboot集成mybatis首先先创建表&#xff0c;这里都简化了DROP TABLE IF EXISTS user;CREATE TABLE user (id int(11) NOT NULL auto_increment,username varchar(255) default NULL,PRIMARY KEY (id)…

java背景图片加上组件_关于 java swing组件加背景图片的问题

最近自己做了一个小的进销存软件,背景图片加上后不能最大化。尝试了好几种方法 最后终于把问题解决了。下面把自己写的实例 分享一下&#xff1a;一个是在JFrame窗体中加如背景图片一个是在Jpanel 面板中加入背景图片都可以伸缩铺满整个屏幕&#xff0c;算是自己的一个小心得。…

java applet 访问文件_使用JavaApplet访问数据库

使用Java Applet访问数据库学习任何的程序语言&#xff0c;当然都得与数据库&#xff0c;Java刚刚诞生的时候&#xff0c;对数据库的支持并不是很好&#xff0c;经过这几年的发展&#xff0c;它对数据库的支持也已经完全达到了成熟的境地。由于这里主要是介绍Java Applet小程序…

java ip 范围内打卡_定位地理位置PHP判断员工打卡签到经纬度是否在打卡之内

具体代码如下所述&#xff1a;/* 计算两组经纬度坐标之间的距离* param $lat1 纬度1* param $lng1 经度1* param $lat2 纬度2* param $lng2 经度2* param int $len_type 返回值类型(1-m 2-km)* param int $decimal 保留小数位数* return float*/public function getDistance($l…

与java线程有关的,线程多少和什么有关?大神们表示有话要说!

原标题&#xff1a;线程多少和什么有关&#xff1f;大神们表示有话要说&#xff01;来源&#xff1a;importnew.com/10780.htmlEddie的回答:Charlie Martin的回答:benjismith的回答:Neil Coffey的回答:McGovernTheory在StackOverflow提了这样一个问题:Java虚拟机最多支持多少个…

php正则表达式 匹配数字,正则表达式之匹配数字范围

最近有个需求就是根据产品编号批量下架产品&#xff0c;需要下架日期为16-31号之间的产品&#xff0c;比如编号为B201607280023匹配表达式如下:^201607(1[6-9]|2[0-9]|3[0-1]).逻辑很简单&#xff0c;如果是必须是1或2或3开头&#xff0c;如果是1开头则后面范围为6-9&#xff0…

php中带?错误,参考-此错误在PHP中意味着什么?

这是什么&#xff1f;这是有关警告&#xff0c;错误和注意事项的许多答案&#xff0c;这些警告&#xff0c;错误和注意事项在您对PHP进行编程时可能会遇到&#xff0c;并且不知道如何解决它们。这也是一个社区Wiki&#xff0c;因此邀请所有人参与添加并维护此列表。为什么是这样…

yiilite.php,YII Framework学习教程-YII的V-view的render若干函数-2011-11-17 | 学步园

YII中&#xff0c;在action可以通过$this->render来指定它的view。其实还其他一$this->render开头的函数。yiilite.php中有这么几个函数。public function renderText($text,$returnfalse){if(($layoutFile$this->getLayoutFile($this->layout))!false)$text$this-…

php生成链接列表,根据URL链接和抛文本生成链接a标签的PHP函数

这个函数可以为组成一个链接&#xff0c;第一个参数是链接的URL&#xff0c;第二个参数是抛文本。最后生成抛文本function parseurl($url, $text) {if(!$url && preg_match("/((https?|ftp|gopher|news|telnet|rtsp|mms|callto|bctp|ed2k|thunder|synacast){1}:\…

java 项目 人力资源项目,基于jsp的人力资源系统-JavaEE实现人力资源系统 - java项目源码...

基于jspservletpojomysql实现一个javaee/javaweb的人力资源系统, 该项目可用各类java课程设计大作业中, 人力资源系统的系统架构分为前后台两部分, 最终实现在线上进行人力资源系统各项功能,实现了诸如用户管理, 登录注册, 权限管理等功能, 并实现对各类人力资源系统相关的实体…

php阿拉伯语字符串,按字母顺序命名阿拉伯语名称Mysql和php

我试图用阿拉伯语对 alphabetical order 中的结果进行排序&#xff0c;但出于某种原因 not sorting correctly ..$ d1 mysqli_query($ connector&#xff0c;“SELECT * FROM article where type 1ORDER BY name ASC”); while($ a1 mysqli_fetch_array($ d1)){echo“$ a1 [n…

matlab里inline定义矩阵,Matlab中的inline函数_matlab中inline函数

Matlab中的inline函数1&#xff0e;有时为了描述某个数学函数的方便&#xff0c;可以用inline()函数来直接编写该函数&#xff0c;形式相当于M-函数&#xff0c;但无编写一个真正的MATLAB文件&#xff0c;就可以描述出某种数学关系。其调用格式为funinline(‘函数内容’,自变量…

matlab最佳拟合的指标是什么意思,Matlab拟合好坏常用指标

Matlab拟合好坏常用指标用过Matlab的拟合、优化和统计等工具箱的网友&#xff0c;会经常遇到下面几个名词&#xff1a;SSE(和方差、误差平方和)&#xff1a;The sum of squares due to errorMSE(均方差、方差)&#xff1a;Mean squared errorRMSE(均方根、标准差)&#xff1a;R…

matlab保存并关闭excel文件夹,[转载]Matlab批量操作目标文件夹下的Excel文件

本程序主要使matlab批量操作Excel表&#xff0c;其中用到了parfor并行计算加快处理速度。相同效果&#xff0c;速度上和Excel vba是有差距的。%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%tic;clear;dirsdir(E:我的文…

php html标签自定义属性,浅谈JS读取DOM对象(标签)的自定义属性

DOM对象对于js来说&#xff0c;是个很基础的元素&#xff0c;我们写js一般来说&#xff0c;都一定会对它进行操作。我们可以很方便地给它加上自定义的属性&#xff0c;比如&#xff1a;var test document.getElementById("test");test.adang "adang";ale…

如何使用matlab的siso,利用Matlab内建程式SISODesignTool完成系统分析(Matlab61)开启.PDF...

利用Matlab内建程式SISODesignTool完成系统分析(Matlab61)开启.PDF利用 Matlab 內建程式 SISO Design Tool 完成系統分析(Matlab 6.1) &#xff1a;開啟 Matlab (6.x 以上版本) &#xff0c;如下圖一左方視窗中點選Control System Toolbox 並執行 SISO Design Tool &#xff0c…

matlab数字图像处理函数,MATLAB数字图像处理学习(二)|常用函数

以下的学习整理来自《数字图像处理原理与实践(MATLAB版)》im2bw功能&#xff1a;将索引图象、灰度图像和RGB彩色图像转换为二值图像 调用形式&#xff1a; >BW im2bw(I,level) BW im2bw(X,cmap,level) BW im2bw(RGB,level)其中level用于设置阈值。level取值范围[0, 1]。 …

php 实现 model层,Thinkhphp5控制器调用的Model层的方法总结

控制器器里:/*** Created by PhpStorm.* User: Haima* Date: 2018/7/8* Time: 15:58*/namespace app\api\controller\v1;use app\api\model\Banner as BannerModel;use app\api\validate\IDMustBePostiveInt;use app\lib\exception\BannerMissException;class Banner{/*** 获取…

matlab6.0序列号,MFC软件获取USB设备的制造商、产品、序列号

PVOID buf malloc(100);char * buf1 (char *)malloc(100);PVOID buf2 malloc(100);char * buf3 (char *)malloc(100);PVOID buf4 malloc(100);char * buf5 (char *)malloc(100);int num 0;int num1 0;int num2 0;PHIDD_ATTRIBUTES a;UpdateData(false); //更新界面int…