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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郭冰川 中级黑马   /  2013-1-17 21:37  /  1633 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 郭冰川 于 2013-1-18 00:27 编辑

一个是用的Object类,另一个是把泛型定义在方法上,效果一样啊,没觉得有什么优势,
我知道泛型定义在类上会更加安全简便,但是不明白泛型定义在方法上有什么好处,求高手解答!


评分

参与人数 1技术分 +1 收起 理由
黄锦成 + 1 神马都是浮云

查看全部评分

4 个回复

倒序浏览
本帖最后由 黑马王振宇 于 2013-1-17 22:19 编辑

泛型类定义的泛型,在整个类中有效,如果被方法使用,那么泛型类的对象明确操作的具体类型后,操作类型也就固定了。
所以当你类上定义泛型了,new出来的对象类型也就确定了,这就照成了不灵活。
为了让不同方法操作不同类型,而且类型还不确定,可以将泛型定义在方法上。
举个例子说明:
  1. class Demo{
  2.         public  <T> void show(T t)
  3.         {
  4.                 System.out.println("show:"+t);
  5.         }
  6.         public <Q> void print(Q q)
  7.         {
  8.                 System.out.println("print:"+q);
  9.         }
  10. }
  11. class GenericDemo
  12. {
  13.         public static void main(String[] args)
  14.         {
  15.                 Demo d = new Demo();
  16.                 d.show("haha");
  17.                 d.show(new Integer(4));
  18.                 d.print("heihei");  //这里就是定义在方法上的好处,可以传不同类型的对象。
  19.                 /*
  20.                 Demo<Integer> d = new Demo<Integer>();  //如果你定义类上那么就只能操作固定类型的对象了
  21.                 d.show(new Integer(4));
  22.                 d.print("hah");  //编译失败,类型不对
  23.                 Demo<String> d1 = new Demo<String>();
  24.                 d1.print("haha");
  25.                 d1.show(5);  //编译失败,类型不对
  26.                 */
  27.         }
  28. }
复制代码
希望能帮到你

评分

参与人数 1黑马币 +12 收起 理由
黄锦成 + 12

查看全部评分

回复 使用道具 举报
在这里是没什么区别。在有返回值的时候,就会体现出差异。如果用Object当做返回类型,要强转。如果使用泛型,就不用强转了
回复 使用道具 举报
黄锦成 发表于 2013-1-17 23:50
在这里是没什么区别。在有返回值的时候,就会体现出差异。如果用Object当做返回类型,要强转。如果使用泛型 ...

谢版主,明白了,还是版主水平高,现在好多人回答的时候都是答非所问弄一堆代码骗技术分
回复 使用道具 举报
郭冰川 发表于 2013-1-18 00:26
谢版主,明白了,还是版主水平高,现在好多人回答的时候都是答非所问弄一堆代码骗技术分 ...

这个你学多了就会明白了。像张老师说的,很多技术不是学不会,只要有时间,就能学到。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马