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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杜佳瑞 中级黑马   /  2012-8-4 15:08  /  1560 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Tool
{
      private Object obj;
      public void setObjec(Object obj)
      {
              this.obj=obj;
       }
       public void getObjec()
      {
              return obj;
       }

}
视频中讲到泛型类这块我有点疑问:我认为泛型类可以理解为一模板类,无论什么类型的对象都可以套用,而Object类可以看做是顶级父类,能否作为这个模板类的参数呢?上述程序是否也可以看做是一个泛型类呢?视频中毕老师重新写了一个QQ类型的泛型类,有没有必要呢?

评分

参与人数 1技术分 +1 收起 理由
包晗 + 1

查看全部评分

2 个回复

倒序浏览
不行的,就以老师的那个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对象,那以后要用就需要在向下转型,这种转换是要求开发者对实际参数类型可以预知的情况下进行的。用泛型就避免这样的麻烦。

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1 赞一个!

查看全部评分

回复 使用道具 举报
张雪磊 发表于 2012-8-4 16:04
不行的,就以老师的那个qq类型的泛型类为例
class Utils
{

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