前面我介绍了关于泛型、通配符以及泛型擦除的相关知识点,大家可以参考以下文章:
详解Java泛型之1——入门泛型必懂的知识点
详解Java泛型之2——详解通配符
详解Java泛型之3——十分钟理解泛型擦除
今天我设计一个实例,分别通过重载、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,于是我们可以使用泛型的边界值的知识点解决该问题,代码如下:
很显然通过泛型的方式实现,不仅让代码量减少了很多,还很容易地控制了参数的传入范围!
限时特惠:本站每日持续更新海量设计资源,一年会员只需29.9元,全站资源免费下载
站长微信:ziyuanshu688
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。