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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© t_mac 黑马帝   /  2011-12-9 14:25  /  2533 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 t_mac 于 2011-12-13 14:11 编辑

如果父类直接在方法前声明了泛型的话子类应该如何指定具体类型呢?
也就是说如果我已经定义了一个类 即父类,在它的方法上声明了泛型(不是具体的),那么在子类方法中为什么不能指定具体的类型呢?

3 个回复

倒序浏览
本帖最后由 hello西卡够 于 2011-12-9 14:52 编辑

在方法前加泛型,相当与指定了方法返回类型,而在子类中,你指明具体的类型,就相当于是另一个新的方法了,而这个方法却没有被定义过;此时,需要在父类中重载方法或子类中重写方法,且指定泛型。
回复 使用道具 举报
java中,方法的参数要求必须是“固定类型的”,加引号的原因就是对于泛型来说有点特殊,但是本质没有变化,即实例话对象之后,对象的方法所对应的参数必须是固定类型的。举一个例子:
boolean add(E e)  ,这个是ArrayList类的添加方法,这个参数表面看是可变的,但实际上也是有约定的。即Class ArrayList<E>,在实例话对象时需要指定泛型类型,否则E会默认是Object对象。所以要想方法类型动态指定就可以使用该形式。
回复 使用道具 举报
直接看代码:
  1. package com.itheima.bbs;

  2. /**
  3. * Person
  4. * @author Administrator
  5. *
  6. * @param <T>
  7. */
  8. public class Person<T> {
  9.         public T getObject() {
  10.                 return null;
  11.         }
  12. }



  13. package com.itheima.bbs;

  14. /**
  15. * Student 继承Person<String>
  16. * @author Administrator
  17. *
  18. */
  19. public class Student extends Person<String> {
  20.         @Override
  21.         public String getObject() {
  22.                 return "String";
  23.         }
  24. }


  25. package com.itheima.bbs;

  26. /**
  27. * Student 继承Person<Integer>
  28. * @author Administrator
  29. *
  30. */
  31. public class Teacher extends Person<Integer> {
  32.         @Override
  33.         public Integer getObject() {
  34.                 return 1;
  35.         }
  36.        
  37.         /**
  38.          * 测试
  39.          * @param args
  40.          */
  41.         public static void main(String[] args) {
  42.                 System.out.println(new Student().getObject().getClass()); //输出:class java.lang.String
  43.                 System.out.println(new Teacher().getObject().getClass()); //输出:class java.lang.Integer
  44.         }
  45. }
复制代码
其实就是在继承的时候申明泛型的类型就可以了。跟使用一个泛型的集合差不多。
如果需要了解更多,可以读下JDK原代码,里面好多都用到了泛型。

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马