泛型和Object的区别!(为什么使用泛型好? )

文章讨论了Java中泛型和Object类型的差异与使用选择。泛型提供类型安全性,防止强制类型转换错误,而Object作为所有类型的父类,更具通用性。在集合中,泛型用于限制元素类型,解决类型安全问题,而Object可能导致类型转换异常。使用Object需在后期进行类型转换,而泛型可在编译时检查类型匹配,提高代码质量。
摘要由CSDN通过智能技术生成

使用object和泛型做形参,是为了能接收更多类型的对象,保证代码健壮性。其实使用泛型的地方可以使用object,使用object的地方也可以使用泛型,所以在这里说明二者区别。

关于object类型

Object是所有类型的父类,比较宽泛。

  • object类型可以来引用任何类型的实例

  • object类型可以存储任何类型的值

  • 可以定义object类型的参数

  • 可以把object作为返回类型

泛型是Object的精确化

任何使用Object的地方都可以使用泛型

将一个对象存入Java集合中后,集合就会 “忘记” 这个对象的数据类型,当再次取出该对象时,该对象的编译类型就变成了 Object 类型(其运行时类型没变)。

Java 集合之所以被设计成这样,是因为集合的设计者不知道我们会用集合来保存什么类型的对象,所以他们把集合设计成能保存任何类型的对象,只要求具有很好的通用性。

但这样做带来如下两个问题:

  1. 集合对元素类型没有任何限制,这样可能引发一些问题。例如,想创建一个只能保存 Dog 对象的集合,但程序也可以轻易地将 Cat 对象存进去,可能引发异常。

  2. 将对象存入集合后,集合丢失了对象的状态信息,只知道它是 Object,因此取出集合元素后通常还需要进行强制类型转换。这种强制类型转换既增加了编程的复杂度,也可能引发ClassCastException 异常。

为了解决这个问题,Java提供了泛型

二者使用场景

调用Object时要进行一个强转,将Object类型转换为接受值类型。

泛型声明:

public <T> T method(T t){ 
    return t; 
}

泛型引用:

String message= method("String类型参数");

Object声明:

public Object method(Object obj){
    return obj;
}

Object引用:

String message= (String)method("String类型参数");

栗子:

定义一个类,这个类里的方法只能QueryBO的子类使用,并且当这个三个布尔类型都为true的时候,返回ture,否则,返回false。

要实现这样的类,应该使用泛型。

从数据库查询出来的一份数据 ——> 特点:已知需要查询内容的具体对象,且可以确定这些类型、属性等。

此时就没必要使用泛型了,泛型是在其有多种子类、且子类类型不同时使用的。

使用总结:

  • 当数据类型很多且不确定要使用什么类型对象时,可以使用Object;
    当数据类型很多且能确定使用什么类型对象时,最好使用泛型,可以在操作数据时把类型进行统一。

  • 使用Object类型在获取数据时,无法使用其特有的行为,比如不能调用属性方法;
    当后面会使用到对象其属性时,应该用泛型。

二者比较(泛型的好处)

  1. 使用obiect作为形参当需要进行类型强制转换时,编译期不会检查类型是否安全,运行期才会检查;使用泛型可以把运行时期的问题提前到编译期间。

  2. 泛型写法的指定保证了代码的健壮性,避免了强制类型转换的风险。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值