40_自定义泛型方法及其应用

java的泛型不同于C++的模板方法那么强大。java的泛型只停留在编译阶段,编译通过后泛型特征被擦除,主要因为保证jvm的效率。

image

 

  • 用泛型知识,写一个交换数组元素的方法(此方法只适合于引用类型数组!因为int[]不会自动转为Integer[]!)

 

private static <T> void swap(T[] a,int i,int j){ T tmp=a[i]; a[i]=a[j]; a[j]=tmp; 
}String[] arr=new String[]{"123","789","456"}; 
//打印出123789456 
for(String s:arr){ System.out.print(s); 
} 
swap(arr,1,2); 
System.out.println(); 
//打印出123456789 
for(String s:arr){ System.out.print(s); 
}

 

注意:

  1. <T>的位置---方法返回值之前

SNAGHTML33f6cf8

2.  T[]可以接收的实参类型---引用类型

若基本类型数组,会报错。如 swap(new int[3],1,2); 会报错!

 

 

普通方法,构造方法,静态方法中都可以使用泛型。

也可以用类型变量表示异常,称为参数化的异常,可以用于方法的throws列表中,但是不能用于catch子句中。

private static <T extends Exception> sayHello()throws T{try{}catch(Exception e){throw (T)e;}}

补充反射:

String[] arr=new String[]{"123","789","456"}; 
System.out.println(arr.getClass().getName());//[Ljava.lang.String; 
System.out.println("abc".getClass().getName());//java.lang.Stringint[] arr2=new int[]{1,3,2}; 
System.out.println(arr2.getClass().getName());//[I 
System.out.println(int.class.getName());//int

Integer[] arr3=new Integer[]{1,3,2}; 
System.out.println(arr3.getClass().getName());//[Ljava.lang.Integer; 
System.out.println(Integer.class.getName());//java.lang.Integer

转载于:https://www.cnblogs.com/qq-757617012/p/4271863.html

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

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

相关文章

SQL Server代理(11/12):维护计划作业

SQL Server代理是所有实时数据库的核心。代理有很多不明显的用法&#xff0c;因此系统的知识&#xff0c;对于开发人员还是DBA都是有用的。这系列文章会通俗介绍它的很多用法。 在这一系列的上一篇&#xff0c;我们看了使用代理帐户模仿Windows安全上下文完成作业步骤的工作。大…

XtraBackup全备与增量备份

一、XtraBackup安装 下载地址&#xff1a;http://www.percona.com/downloads/XtraBackup/XtraBackup-2.2.8/source/ 安装步骤&#xff1a; How to build XtraBackup on Linux Prerequisites -------------$ yum install cmake gcc gcc-c libaio libaio-devel automake autocon…

《大话设计模式》 国外资料

It is not easy to remember all design patterns. Here are some stories about design patterns which might help! Creational Singleton – Only one president in AmericaFactory – A factory that produces humanAbstract Factory – An abstract factory to produce CP…

python arcgis 图书_arcgis python

本书作者是GIS发方面的知名作者&#xff0c;曾著有《JavaScript构建Web和ArcGIS Server应用实战》(Building Web and Mobile ArcGIS Server Applications with JavaScript)一书。 本书内容易学易懂&#xff0c;帮助读者成为GIS发高手。《面向ArcGIS的Python脚本编程》是一本指导…

博客园客户端UAP开发随笔 -- App连接云端内容的桥梁:WebView

当你辛苦的从网上爬下来一篇文章之后&#xff0c;怎么在你的应用内展示这些包含HTML标记的文章&#xff1f;如果你使用的是Javascript开发应用&#xff0c;恭喜你&#xff0c;直接塞进页面就可以了&#xff0c;同时说明你很熟悉页面开发&#xff0c;而现在windows也支持这种方式…

C4.5

C4.5是机器学习算法中的另一个分类决策树算法&#xff0c;它是基于ID3算法进行改进后的一种重要算法&#xff0c;相比于ID3算法&#xff0c;改进有如下几个要点&#xff1a; 用信息增益率来选择属性。ID3选择属性用的是子树的信息增益&#xff0c;这里可以用很多方法来定义信息…

谈谈分布式事务之三: System.Transactions事务详解[下篇]

在前面一篇给出的Transaction的定义中&#xff0c;信息的读者应该看到了一个叫做DepedentClone的方法。该方法对用于创建基于现有Transaction对 象的“依赖事务&#xff08;DependentTransaction&#xff09;”。不像可提交事务是一个独立的事务对象&#xff0c;依赖事务依附于…

iOS开发系列--触摸事件、手势识别、摇晃事件、耳机线控

-- iOS事件全面解析 概览 iPhone的成功很大一部分得益于它多点触摸的强大功能&#xff0c;乔布斯让人们认识到手机其实是可以不用按键和手写笔直接操作的&#xff0c;这不愧为一项伟大的设计。今天我们就针对iOS的触摸事件&#xff08;手势操作&#xff09;、运动事件、远程控制…

python为什么忽然火了_为什么Python突然就火了起来了呢?

近日&#xff0c;TIOBE发布10月编程语言排行榜显示&#xff0c;15年来TIOBE指数的前8名一直保持不变&#xff0c;而Python正在成为一种新的大型语言。越来越多的企业在使用Python进行开发&#xff0c;越来越多的人正在加入Python程序员行列!TIOBE 10月编程语言排行榜前20名Pyth…

ARP扫描工具arp-scan

2019独角兽企业重金招聘Python工程师标准>>> ARP扫描工具arp-scan arp-scan是Kali Linux自带的一款ARP扫描工具。该工具可以进行单一目标扫描&#xff0c;也可以进行批量扫描。批量扫描的时候&#xff0c;用户可以通过CIDR、地址范围或者列表文件的方式指定。该工具…

elementui el-from 怎样显示图片_vue2.0使用weui.js的uploader组件上传图片(兼容移动端)...

本文已同步到专业技术网站 www.sufaith.com, 该网站专注于前后端开发技术与经验分享, 包含Web开发、Nodejs、Python、Linux、IT资讯等板块.最近在使用 vue2.0开发微信公众号网页 其中涉及到 选择图片, 图片的压缩上传, 预览, 删除等操作。项目整体UI框架使用的是 vux, 但可惜的…

面向对象分析

在需求获取阶段&#xff0c;开发人员关注于理解用户以及他们的使用要求。而在需求分析阶段&#xff0c;开发人员关注于理解系统需要构建的内容&#xff0c;其核心是产生一个准确的、完整的、一致的和可验证的系统模型&#xff0c;称为分析模型。 面对对象的分析模型由三个独立的…

51nod 1050 循环数组最大子段和

1050 循环数组最大子段和 N个整数组成的循环序列a[1],a[2],a[3],…,a[n]&#xff0c;求该序列如a[i]a[i1]…a[j]的连续的子段和的最大值&#xff08;循环序列是指n个数围成一个圈&#xff0c;因此需要考虑a[n-1],a[n],a[1],a[2]这样的序列&#xff09;。当所给的整数均为负数时…

Spark- Linux下安装Spark

Spark- Linux下安装Spark 前期部署 1.JDK安装&#xff0c;配置PATH 可以参考之前配置hadoop等配置 2.下载spark-1.6.1-bin-hadoop2.6.tgz,并上传到服务器解压 [rootsrv01 ~]# tar -xvzf spark-1.6.1-hadoop2.6.tgz /usr/spark-1.6.1-hadoop2.6 3.在 /usr 下创建软链接到目标文…

python需要背的英语单词怎么写_学Python必须背的42个常见单词,看看你都会吗?...

这42个单词是学习Python必须背会的单词&#xff0c;也是代码中常见的单词。希望你能都背下来&#xff01;&#xff01;1. adult [ˈdʌlt] 成年人2. authentication [ɔːˌθentɪˈkeɪʃn] 身份验证、认证、鉴定3. bit [bɪt] 稍微、小量、小块、一点4. byte [baɪt] …

asp.net mvc4开启SqlServer 会话共享模式

2019独角兽企业重金招聘Python工程师标准>>> 应用部署结构&#xff08;精简&#xff09;: 站点部署在Nginx后面&#xff0c;以Nginx作为反向代理&#xff0c;不希望在Nginx上设置ip_hash&#xff0c;实现比较真实的负载均衡效果。 这时考虑到需要让site1和site2同时…

【转】(五)unity4.6Ugui中文教程文档-------概要-UGUI Interaction Components

原创至上&#xff0c;移步请戳&#xff1a;&#xff08;五&#xff09;unity4.6Ugui中文教程文档-------概要-UGUI Interaction Components 4、Interaction Components 本节涵盖了处理交互&#xff0c;例如鼠标或触摸事件和使用键盘或控制器交互的 UI系统中的组件。 4.1 Select…

j2ee 简单网站搭建:(十)jquery ztree 插件使用入门

为什么80%的码农都做不了架构师&#xff1f;>>> 《j2ee 简单网站搭建&#xff1a;&#xff08;一&#xff09; windows 操作系统下使用 eclipse 建立 maven web 项目》《j2ee 简单网站搭建&#xff1a;&#xff08;二&#xff09;添加和配置 spring spring-mvc 的…

实习报告

实习时间&#xff1a;2016/2/18-2016/2/24 实习地点&#xff1a;陕西省米脂县公安局网络警察大队     实习报告&#xff1a; 如今的社会&#xff0c;网络高度发展&#xff0c;一些人随着时代的潮流利用网络发家致富&#xff0c;而有些人利用网络监管的一些漏洞&#xff0c;…

Android成长日记-使用GridView显示多行数据

本节将实现以下效果 Ps&#xff1a;看起来很不错的样子吧&#xff0c;而且很像九宫格/se ----------------------------------------------------------------------- 下面进入正题[s1] &#xff1a; Step 1&#xff1a;新建Layout&#xff0c;里面创建GridView <GridView a…