黑马程序员技术交流社区
标题:
关于方法上泛型的问题
[打印本页]
作者:
左建飞
时间:
2012-8-12 18:14
标题:
关于方法上泛型的问题
public class GenericDemo
{
/**
* @param args
*/
public static void main(String[] args)
{
Demo d=new Demo();
d.show(2);
d.show("hah");
d.show('a');
d.show(2.333);
}
}
class Demo
{
public <T> void show(T t)//public void show(Object obj){}
{
System.out.println("show"+t);
}
public <Q> void print(Q q)
{
System.out.println("print"+q);
}
}
复制代码
泛型类定义的泛型,在整个类中有效。如果被方法使用,那么泛型类的对象明确要操作的具体类型后,所要操作的类型就已经固定了。
为了让不同的方法可以操作不同的类型,而且类型还不确定。那么可以将泛型定义在方法上。
方法上定义的泛型,是跟Object obj功能完全一样的么?有什么不同?
作者:
张雪磊
时间:
2012-8-12 18:26
不一样的,如果用Object,是在用父类的引用接收子类对象,这是在用多态的特性
例如Object obj = new String("abc");这实际上把子类向上提升成父类了,
他就是一个Object对象了,如果要操作子类的方法的时候还需要向下强转。
而泛型,当你调用泛型函数指定了类型,比如把那个T,或Q就指定成String,
Integer 那他的数据类型就是String或Integer了,你可以直接使用了。如果你
定义的类型不是指定的泛型类型,编译器就直接报错了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2