java 泛型 object_java中的object类和泛型

object类和泛型都有助于提高程序的复用性,那么它们的区别是什么呢?又为什么泛型被广泛使用,而object被打入“冷宫”呢?

其实在jdk1.5版本发布之前,object还是被广泛使用的

那么让我们先看看jdk api中对object类的定义:

99a1dd60206aeec540c1973ea5e55f5c.png

好吧,定义上并不能看出它的缺点,不过我们得了一个信息:object类的出现远早于泛型

好像也没什么用那我们上代码吧:

public class Dog {

private Object age = 10;

public Object getAge() {

return age;

}

}

public class AnotherDog {

private L age = (L) new Integer(10);

public L getAge() {

return age;

}

}

我定义了两条Dog,都只含有一个rep即年龄,现在我测试这两条狗,使它们都增长一岁

public class testDog {

private Dog d = new Dog();

private AnotherDog d1 = new AnotherDog<>();

public int addAge() {

int a = (int) d.getAge();

return a+1;

}

public int addAnotherAge() {

return d1.getAge()+1;

}

}

主函数打印狗增加年龄后的岁数

public static void main(String[] args) {

testDog dog = new testDog();

System.out.println(dog.addAge());

System.out.println(dog.addAnotherAge());

}

结果都是11,这没什么问题。但我们注意到,用object定义狗的岁数时

public int addAge() {

int a = (int) d.getAge();

return a+1;

}

执行增加岁数操作就要进行强制类型转换

而如果不进行强制类型转换

b4f7d1be6e348f102b4b3877cc0cc341.png

连静态类型检查都过不了

总结一下,上文已说过早期的时候,我们使用Object来代表任意类型。使用object必然会带来转型的问题,向上转型是没有任何问题的,但是在向下转型的时候其实隐含了类型转换的问题。也就是说这样的程序并不是安全的。所以Java在JDK5后引入了泛型,提高程序的安全性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值