系统运维

详解Java泛型之(四)一个例子理解泛型带来的好处

时间:2010-12-5 17:23:32  作者:数据库   来源:人工智能  查看:  评论:0
内容摘要:今天我设计一个实例,分别通过重载、Object类型参数以及泛型三种方式来实现这个实例,让大家清楚地体会到使用泛型技术给我们带来的好处!实例需求有这样一个需求,自己写一个方法能够比较两个数值的大小,如果

今天我设计一个实例,详解型带分别通过重载、泛型Object类型参数以及泛型三种方式来实现这个实例,例理让大家清楚地体会到使用泛型技术给我们带来的解泛好处!

实例需求

有这样一个需求,自己写一个方法能够比较两个数值的详解型带大小,如果相等返回true,泛型否则返回false。

通过重载实现

分析:因为在java中,例理常用数值包括Integer、解泛Float、详解型带Double、泛型Long我们可以利用重载的例理知识(同名不同参)设计四个方法来实现

public static boolean equal(Integer a,Integer b) {        if (a.equals(b))         return true;       else         return false;    }    public static boolean equal(Double a,Double b) {        if (a.equals(b))         return true;       else         return false;    }    public static boolean equal(Float a,Float b) {        if (a.equals(b))         return true;       else         return false;    } 

通过Object类型参数实现

很显然像上面这样的设计稍微有些麻烦,我们可以利用Object作为参数,源码库解泛通过一个方法就实现该需求,详解型带代码如下:

public static boolean equal(Object a,泛型Object b) {        if (a.equals(b))         return true;       else         return false;    } 

通过泛型实现

但是像上面这样设计仍然有一个问题,因为参数是例理Object,所以可以实现equal(123,“abc”) 的比较,这与题目要求不符!题目要求是——比较两个数值的大小,而abc的类型是String。这个时候我们就可以通过泛型的知识来解决该问题了,服务器托管我们看Integer、Float、Double、Long的源码发现,他们都继承了抽象类Number,于是我们可以使用泛型的边界值的知识点解决该问题,代码如下:

很显然通过泛型的方式实现,不仅让代码量减少了很多,还很容易地控制了参数的传入范围!

云南idc服务商
copyright © 2025 powered by 益强资讯全景  滇ICP备2023006006号-31sitemap