java中的object类和泛型
Posted tdw1183710209
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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后引入了泛型,提高程序的安全性。
以上是关于java中的object类和泛型的主要内容,如果未能解决你的问题,请参考以下文章