黑马程序员技术交流社区

标题: 泛型类 [打印本页]

作者: 杜佳瑞    时间: 2012-8-4 15:08
标题: 泛型类
class Tool
{
      private Object obj;
      public void setObjec(Object obj)
      {
              this.obj=obj;
       }
       public void getObjec()
      {
              return obj;
       }

}
视频中讲到泛型类这块我有点疑问:我认为泛型类可以理解为一模板类,无论什么类型的对象都可以套用,而Object类可以看做是顶级父类,能否作为这个模板类的参数呢?上述程序是否也可以看做是一个泛型类呢?视频中毕老师重新写了一个QQ类型的泛型类,有没有必要呢?
作者: 张雪磊    时间: 2012-8-4 16:04
不行的,就以老师的那个qq类型的泛型类为例
class Utils<QQ>
{
        private QQ q;
        public void setObject(QQ q)
        {
                this.q = q;
        }
        public QQ getObject()
        {
                return q;
        }
}

定义泛型后,当我们需要用这个Utils类,即创建Utils的对象时,就得给qq指定类型,这样这个类的类型就固定了,比如Utils<String> ex =new Utils<String>();创建这么个对象。那上面那个类相当于变成这个样子:
class Utils
{
        private String q;
        public void setObject(String q)
        {
                this.q = q;
        }
        public String getObject()
        {
                return q;
        }
}
而如果要用Object的话相当于把传入的对象向上提上成Object了,也就是你得到的是一个Object对象,那以后要用就需要在向下转型,这种转换是要求开发者对实际参数类型可以预知的情况下进行的。用泛型就避免这样的麻烦。

作者: 杜佳瑞    时间: 2012-8-4 22:14
张雪磊 发表于 2012-8-4 16:04
不行的,就以老师的那个qq类型的泛型类为例
class Utils
{

谢谢 解决了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2