java中的object类和泛型

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后引入了泛型,提高程序的安全性。


猜你喜欢

转载自www.cnblogs.com/tdw1183710209/p/12743705.html
今日推荐