码迷,mamicode.com
首页 > 编程语言 > 详细

java中的object类和泛型

时间:2020-04-21 13:28:09      阅读:75      评论:0      收藏:0      [点我收藏+]

标签:string   api   代码   它的   bsp   mamicode   静态类   不能   ring   

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

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

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

技术图片

 

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

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

public class Dog {
    private Object age = 10;
    
    public Object getAge() {
        return age;
        
    }
}

 

public class AnotherDog<L> {

    private L age = (L) new Integer(10);
    
    public L getAge() {
        return age;
    }
}

 

 

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

public class testDog {

    private Dog d = new Dog();
    private AnotherDog<Integer> 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;
    }

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

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

技术图片

 

 连静态类型检查都过不了

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


 

java中的object类和泛型

标签:string   api   代码   它的   bsp   mamicode   静态类   不能   ring   

原文地址:https://www.cnblogs.com/tdw1183710209/p/12743705.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!