网站首页 > 基础教程 正文
前面我介绍了关于泛型、通配符以及泛型擦除的相关知识点,大家可以参考以下文章:
今天我设计一个实例,分别通过重载、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,于是我们可以使用泛型的边界值的知识点解决该问题,代码如下:
很显然通过泛型的方式实现,不仅让代码量减少了很多,还很容易地控制了参数的传入范围!
猜你喜欢
- 2025-03-13 python:python与java语法的异同之处
- 2025-03-13 Java 性能优化的 50 个细节(珍藏版)
- 2025-03-13 几道小小的题目一起和大家更进一步的了解 Java (1)
- 2025-03-13 C++语言的单元测试与代码覆盖率
- 2025-03-13 java互联网架构师,教你学java基本的程序设计结构:大数值+数组
- 2025-03-13 三十六、Java包装类
- 2025-03-13 Java泛型全方位剖析:从入门到精通的完整指南(上篇)
- 2025-03-13 自学Java2(保姆级教学)——常量与变量
- 2025-03-13 JAVA反射机制详解,一学就会
- 2025-03-13 Java这个高级特性,很多人还没用过
- 最近发表
-
- 掌握SpringBoot-2.3的容器探针:实战篇
- kubernetes基础知识之驱逐节点(k8s驱逐节点后恢复)
- Linux环境中制作网络哨兵Sentinel Docker镜像
- k8s之配置CNI网络(k8s 网络配置)
- docker实战之:镜像更新(docker 镜像升级替换)
- 离线在docker镜像方式部署ragflow0.17.2
- Linux日常小技巧Docker打包(docker打包lnmp)
- 使用dockerfile构建docker镜像(docker通过dockerfile构建镜像命令)
- 「云原生」Containerd ctr,crictl 和 nerdctl 命令介绍与实战操作
- Kylin安装Dify(kylin安装部署)
- 标签列表
-
- jsp (69)
- pythonlist (60)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- pythonif (68)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- console.table (62)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)