泛型程序设计
2021/4/8 22:55:10
本文主要是介绍泛型程序设计,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
使用泛型机制编写的程序代码要比那些杂乱的使用Object变量,然后进行强制类型转换的代码具有更好的安全性和可读性。泛型对于集合类尤其有用,例如,ArrayList就是一个无处不在的集合类。
泛型程序设计意味着编写的代码可以被很多不同类型的对象所重用。一个ArrayList类可以聚集任何类型的对象。这是一个泛型程序设计的实例。
泛型提供了一个更好的解决方案:类型参数。ArrayList类有一个类型参数用来指示元素的类型:
ArrayList<String> files = new ArrayList<String>();
这使得代码具有更好的可读性。人们一看就知道这个数组列表中包含的是String对象。
一个泛型类就是具有一个或多个类型变量的类。
public class Pair<T> { private T first; private T second; public Pair() { first = null; second = null; } public Pair(T first,T second) { this.first = first; this.second = second; } public T getFirst() { return first; } public void setFirst(T first) { this.first = first; } public T getSecond() { return second; } public void setSecond(T second) { this.second = second; } }
public class PairTest1 { public static void main(String[] args) { String[] words = {"Mary","had","a","little","lamb"}; Pair<String> mm = ArrayAlg.minmax(words); System.out.println("min="+mm.getFirst()); System.out.println("max="+mm.getSecond()); } } class ArrayAlg{ public static Pair<String> minmax(String[] a ){ if(a==null||a.length==0) return null; String min=a[0]; String max=a[0]; for(int i=0;i<a.length;i++) { if(min.compareTo(a[i])>0) min = a[i]; if(max.compareTo(a[i])<0) max = a[i]; } return new Pair<>(min,max); } }
min=Mary
max=little泛型方法。
class ArrayAlg{ public static <T> T getMiddle(T...ts) { return ts[ts.length/2]; } }
这个方法是在普通类中定义的,而不是在泛型类中定义的。注意,类型变量放在修饰符(这里是public static)的后面,返回类的前面。
泛型方法可以定义在普通类中,也可以定义在泛型类中。
当调用一个泛型方法时,在方法名前的尖括号中放入具体的类型。
public class PairTest2 { public static void main(String[] args) { String middle = ArrayAlg1.<String>getMiddle("Hohn","Q.","Public"); System.out.println(middle); } } class ArrayAlg1{ public static <T> T getMiddle(T...ts) { return ts[ts.length/2]; } }
返回Q.
在这种情况下,方法调用中可以省略<String>类型参数。编译器有足够的信息能够推断出所调用的方法。
这篇关于泛型程序设计的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-19永别了,微服务架构!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?