黑马程序员技术交流社区
标题:
求教,关于泛型和Object方法的区别
[打印本页]
作者:
jzxyhjl
时间:
2014-4-28 14:04
标题:
求教,关于泛型和Object方法的区别
本帖最后由 jzxyhjl 于 2014-4-29 08:45 编辑
package generic;
/**
* 泛型方法
* @author asus
*
*/
public class GenericMethodDemo {
public static void main(String[] args) {
MethodDemo md = new MethodDemo();
//泛型方法
md.printQ("...abc");
md.printQ(2);
//Object参数
md.printO("...abc");
md.printO(2);
}
}
class MethodDemo{
public <Q> void printQ(Q q){
System.out.println(q);
}
public void printO(Object obj){
System.out.println(obj);
}
}
复制代码
今天看基础视频降到了泛型,然后发现除了泛型方法,传入(object参数)的方法也能接受各种类型并输出,那么这两种方法还有什么区别呢?
作者:
1453149997
时间:
2014-4-28 19:06
区别之一:
使用泛型调用特有方法时不需要转型;而是Object需要转型
如:
//使用Object
public void doSth(Object obj){
if(obj instanceof Person){
((Person)obj).goShopping();
}
if(obj instanceof Cat){
((Cat)obj).catchMouse();
}
}
//使用泛型
public <T>void doSth(T t){
if(obj instanceof Person){
t.goShopping();
}
if(obj instanceof Cat){
t.catchMouse();
}
区别之二:
定义打印数组元素的方法
//使用Object[]无法接收int[]之类的基本类型数组
public static void printArray(Object[] obj){
...
}
//使用泛型可以打印任意类型数组
public static <T>void printArray(T[] t){
for(int i=0;i<t.length;i++){
System.out.println(t
);
}
}
}
作者:
jzxyhjl
时间:
2014-4-28 19:20
1453149997 发表于 2014-4-28 19:06
区别之一:
使用泛型调用特有方法时不需要转型;而是Object需要转型
如:
谢谢 学习了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2