网站首页 > java教程 正文
前面我介绍了关于泛型、通配符以及泛型擦除的相关知识点,大家可以参考以下文章:
今天我设计一个实例,分别通过重载、Object类型参数以及泛型三种方式来实现这个实例,让大家清楚地体会到使用泛型技术给我们带来的好处!
实例需求
有这样一个需求,自己写一个方法能够比较两个数值的大小,如果相等返回true,否则返回false。
通过重载实现
分析:因为在java中,常用数值包括Integer、Float、Double、Long我们可以利用重载的知识(同名不同参)设计四个方法来实现
Bash
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作为参数,通过一个方法就实现该需求,代码如下:
Bash
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,于是我们可以使用泛型的边界值的知识点解决该问题,代码如下:
很显然通过泛型的方式实现,不仅让代码量减少了很多,还很容易地控制了参数的传入范围!
猜你喜欢
- 2025-03-25 JAVA 泛型中的通配符 T,E,K,V,?
- 2025-03-25 java泛型上下边界(? extend T,?super T)
- 2025-03-25 Java 泛型擦除(java泛型为什么要擦除)
- 2025-03-25 理解JAVA泛型和通配符,再也不用每次百度了
- 2025-03-25 Java基础-泛型擦除(泛型擦除如何获取类型)
- 2025-03-25 六十三、Java泛型在面向对象编程中的应用技巧与策略
- 2025-03-25 站在巨著之上谈泛型(皇皇巨著还是煌煌巨著)
- 2025-03-25 第八节:泛型实例化(泛型方法和泛型类)
- 2025-03-25 面试题系列:用了这么多年的 Java 泛型,我竟然只知道它的皮毛
- 2025-03-25 Java中的泛型与类型推断:代码魔术师的秘密武器
你 发表评论:
欢迎- 最近发表
-
- 一招解决vscode报java插件版本不一致以及相关缓存引起的问题
- 关于Java 8版本的理解(java中的接口怎么理解)
- Java 9 到 Java 16 的版本演进:一次模块化革命和语言的持续进化
- 如何选择合适的Java版本(如何选择jdk版本)
- 晚会互动小游戏(晚会节目互动小游戏)
- 基于JavaSwing的象棋游戏系统java休闲游戏jsp源代码Mysql
- Java 猜字母游戏!会写会玩才是真本事!
- 基于JavaSwing的贪吃蛇大作战java休闲游戏jsp源代码mysql
- Java & Python 康威生命游戏 - 命令行版
- 高玩随机种子无损速通《我的世界》10分钟不到刷新世界纪录
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)