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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

我感觉就一个区别,前者不需要强转,后者需要强转。不知道各位还有什么高见。

6 个回复

倒序浏览
泛型好处:1.不必强转
2.解决安全问题
回复 使用道具 举报
感觉最重要的还是解决了安全问题吧。
回复 使用道具 举报
不使用泛型. 会使容器装的类型不一致,会导致程序不安全.
回复 使用道具 举报
先了解什么是泛型,你就懂了!!!!!!!!!!!!!


泛型:JDK1.5以后出现的新特性,用于解决安全问题,是一个类型安全机制。

          int[] arr = new int[3];
          arr[0] = 1;
          //arr[1] = 3.5;//编译失败,因为数组在创建时就已经明确了类型。
          而容器在创建时没有明确类型,容易有安全隐患。这时可以使用泛型来明确容器的类型。
         
好处:
     1.将运行时期出现问题ClassCastException,转移到了编译时期。
          方便于程序猿解决问题,让运行时期问题减少,安全。
     2.避免了强制转换的麻烦。

泛型格式:通过<>定义要操作的引用数据类型。

在使用java提供的对象时,什么时候使用泛型呢?
             通常在集合框架中很常见,只要见到<>就要定义泛型。

其实<>就是用来接收类型的。
     当使用集合时,将集合中要存储的数据类型作为参数传递到<>中即可。



泛型定义在类上:

什么时候定义泛型类?
     当类中要操作的引用数据类型不确定的时候,早期定义Object来完成扩展。
     现在定义泛型来完成扩展。

泛型定义在方法上:

泛型类定义的泛型,在整个类中有效,如果被方法使用,那么泛型类的对象明确要操作的具体类型后,所以要操作的类型就已经固定了。

class Demo<T>
{
     public void show(T t)
     {
          System.out.println("show "+t);
     }
     public void print(T t)
     {
          System.out.println("print "+t);
     }
}

为了不让不同方法可以操作不同类型,而且类型还不确定。那么可以将泛型定义在方法上。

特殊之处:
     静态方法不可以访问类上定义的泛型。
     如果静态方法操作的应用数据类型不确定,可以将泛型定义在方法上。

class Demo <Q>
{
     public <T> void show(T t)//泛型定义在方法上,可以操作不同类型
     {
          System.out.println("show "+t);
     }
   
     public void print(Q t)//泛型类定义的泛型在整个类中有效
     {
          System.out.println("print "+t);
     }
   
     public static <W> void method(W t)
     {
          System.out.println("method "+t);
     }
}

泛型定义在接口上。

     通配符       ?     也可以理解为占位符。     
   
   泛型限定:   
   <? extends E>:可以接收E类型和E的子类型。上限。
   <? super E>:可以接收E类型或者E的父类型。下限。
  
       只打印Person和Person的子类  用  <? extends Person>

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
哥们你在黑马了吧,送我点黑马币呗,如果可以的话。嘿嘿。我要来黑马啊。

点评

可惜我从知道黑马到现在才2星期,在苦逼的自学中~希望能进55期  发表于 2014-12-2 11:09

评分

参与人数 1黑马币 +2 收起 理由
as604049322 + 2 很给力!

查看全部评分

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