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

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

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

实例需求

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

通过重载实现

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

  1. public static boolean equal(Integer a,Integer b) { 
  2.       if (a.equals(b)) 
  3.         return true
  4.       else 
  5.         return false
  6.    } 
  7.    public static boolean equal(Double a,Double b) { 
  8.       if (a.equals(b)) 
  9.         return true
  10.       else 
  11.         return false
  12.    } 
  13.    public static boolean equal(Float a,Float b) { 
  14.       if (a.equals(b)) 
  15.         return true
  16.       else 
  17.         return false
  18.    } 

通过Object类型参数实现

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

  1. public static boolean equal(Object a,Object b) { 
  2.       if (a.equals(b)) 
  3.         return true
  4.       else 
  5.         return false
  6.    } 

通过泛型实现

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

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

 

责任编辑:姜华 来源: 今日头条
相关推荐

2021-07-01 06:47:30

Java泛型泛型擦除

2017-11-14 14:41:11

Java泛型IO

2021-06-18 08:25:42

Java泛型通配符

2021-06-17 06:51:32

Java泛型Java编程

2009-06-16 11:32:00

Java泛型

2009-06-11 17:31:27

Java泛型

2011-03-21 16:26:28

java泛型

2024-10-28 00:40:49

Go语法版本

2009-03-17 16:22:13

Java泛型接口

2011-04-13 09:16:55

泛型

2021-09-29 18:17:30

Go泛型语言

2024-04-23 08:23:36

TypeScript泛型Generics

2009-08-24 10:29:39

C# 泛型

2024-10-22 16:59:07

2009-09-25 10:03:51

Java泛型

2011-07-10 13:45:35

JAVA泛型

2009-07-30 14:00:21

ASP.NET 2.0

2024-11-05 09:11:09

TypeScript开发者代码

2017-03-06 16:51:52

Java泛型实现

2021-12-30 19:34:15

Java泛型JDK
点赞
收藏

51CTO技术栈公众号