A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 左建飞 中级黑马   /  2012-8-12 18:14  /  1991 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public class GenericDemo
  2. {
  3.         /**
  4.          * @param args
  5.          */
  6.         public static void main(String[] args)
  7.         {
  8.                 Demo d=new Demo();
  9.                 d.show(2);
  10.                 d.show("hah");
  11.                 d.show('a');
  12.                 d.show(2.333);
  13.                
  14.         }
  15. }
  16. class Demo
  17. {
  18.         public <T> void show(T t)//public void show(Object obj){}
  19.         {
  20.                 System.out.println("show"+t);
  21.         }
  22.         public <Q> void print(Q q)
  23.         {
  24.                 System.out.println("print"+q);
  25.         }
  26. }
复制代码
泛型类定义的泛型,在整个类中有效。如果被方法使用,那么泛型类的对象明确要操作的具体类型后,所要操作的类型就已经固定了。
为了让不同的方法可以操作不同的类型,而且类型还不确定。那么可以将泛型定义在方法上。
方法上定义的泛型,是跟Object obj功能完全一样的么?有什么不同?

1 个回复

倒序浏览
不一样的,如果用Object,是在用父类的引用接收子类对象,这是在用多态的特性
例如Object obj = new String("abc");这实际上把子类向上提升成父类了,
他就是一个Object对象了,如果要操作子类的方法的时候还需要向下强转。
而泛型,当你调用泛型函数指定了类型,比如把那个T,或Q就指定成String,
Integer 那他的数据类型就是String或Integer了,你可以直接使用了。如果你
定义的类型不是指定的泛型类型,编译器就直接报错了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马