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安全上下文完成作业步骤的工作。大…

mysql select array_从数据库select查询出来的数组

PHP中提供了array_unique函数去除一维数组中的重复项&#xff0c;但是我们实际的项目开发中&#xff0c;从数据库select查询出来的数组经常是二维的&#xff1b;这里面可能有重复项&#xff0c;这就需要我们自己定义函数进行去除重复项。思路&#xff1a;1、首先获取第二维数组…

shell中字分隔的妙用:变量IFS

shell把每个 $IFS 字符对待成一个分隔符&#xff0c;且基于这些字符把其他扩展的结果分割。如果 IFS 未设置&#xff0c;或者它的值正好是 “‘<space><tab><newline>’”&#xff0c;那么任何IFS 字符的序列就送往分割字。自写一个简单的脚本&#xff1a;#!…

老子《道德经》第三十五章

上士闻道&#xff0c;勤而行之&#xff1b;中士闻道&#xff0c;若存若亡&#xff1b;下士闻道&#xff0c;大笑之。 不笑不足以为道。 故建言有之&#xff1a;明道若昧&#xff0c;进道若退&#xff0c;夷道若颣。 上德若谷&#xff0c;大白若辱&#xff0c;广德若不足&#x…

php 通过类名获取类的文件地址

$reflector new ReflectionClass("Child"); $fn $reflector->getFileName(); return dirname($fn);转载于:https://www.cnblogs.com/bushe/p/5215718.html

大数据告诉你,电商都把假货发给谁?

“看人下刀”&#xff0c;电商玩得更科幻 内幕&#xff1a;你在网上买件大牌化妆品&#xff0c;在订单提交→发货之前&#xff0c;系统会查询分析你在全平台的购物数据(大数据内部共享)&#xff1a;购买均价&#xff0c;常购品牌&#xff0c;退货率。 如果你同类产品消费倾向绝…

mysql取得列类型_Mysql列类型

数值型整型&#xff1a;tinyint:微小的列类型&#xff0c;1个字节&#xff0c;默认有符号&#xff0c;存储范围&#xff1a;-128--127可选属性&#xff1a;tingyint(M) unsigned zerofillM:宽度(在0填充(zerofill)时才有效),只是显示效果&#xff0c;不影响实际数据的存储范围;…

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…

DHCP基本配置

第一步 安装 DHCP [rootlocalhost ~]# yum install dhcp dhcp-devel DHCP文件简介 /etc/dhcp/dhcpd.conf #主配置文件&#xff0c;除了括号那栏&#xff0c;其它都要结尾 ; 这样的分号 /var/lib/dhcpd/dhcpd.leases #IP地址租约在这里 第二步 配置 DHCP 主文件配置[rootlocalho…

python arcgis 图书_arcgis python

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

scrapy 让指定的spider执行指定的pipeline

处理scrapy中包括多个pipeline时如何让spider执行制定的pipeline管道&#xff11;:创建一个装饰器from scrapy.exceptions import DropItemimport functools当有多个pipeline时,判断spider如何执行指定的管道 def check_spider_pipeline(process_item_method): functools.wr…

五大常用算法之三:贪心算法

一、基本概念&#xff1a; 所谓贪心算法是指&#xff0c;在对问题求解时&#xff0c;总是做出在当前看来是最好的选择。也就是说&#xff0c;不从整体最优上加以考虑&#xff0c;他所做出的仅是在某种意义上的局部最优解。 贪心算法没有固定的算法框架&#xff0c;算法设计的关…

python学习笔记列表和元组(三)

列表&#xff08;list&#xff09;是Python以及其他语言中最常用到的数据结构之一。Python使用使用中括号 [ ] 来解析列表。列表是可变的&#xff08;mutable&#xff09;——可以改变列表的内容。对应操作&#xff1a;1、查&#xff08;[]切片操作&#xff09; name [tom,张三…

python 函数的调用的时候参数的传递_Python Unittest;如何获取调用函数时传递的参数?...

我试图做一个单元测试来检查这个python函数(dispatch)是否传递了正确的参数来处理\u结果。在在dispatch中调用处理“unu result”的函数时&#xff0c;有没有方法“劫持”输入参数&#xff1f;我没有在调度函数中修改代码的权限。在以下是单元测试中的want预览&#xff1a;impo…

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

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

listview与gridview点击时的背景色取消

在布局文件里面的listview控件添加以下代码android:listSelector"#00000000" //透明色 可以自己选择点击颜色转载于:https://www.cnblogs.com/yulook/p/5219932.html

解决yum命令失效,vim: command not found

安装python3模块时&#xff0c;yum命令无法执行错误:**/usr/bin/yum: line 3: import: command not found/usr/bin/yum: line 4: try:: command not found/usr/bin/yum: line 5: import: command not found/usr/bin/yum: line 6: except: command not found/usr/bin/yum: line …

C4.5

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

(周日赛)Sort the Array

题意&#xff1a;一段数字&#xff0c;逆置其中两个使其递增 DescriptionBeing a programmer, you like arrays a lot. For your birthday, your friends have given you an array a consisting of ndistinct integers. Unfortunately, the size of a is too small. You want a…