黑马程序员_java 泛型

---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IO开发S</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! 


----------------------


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

1.泛型的格式

    通过<>来定义要操作的引用数据类型

2.泛型的好处:

    (1).将运行时期出现的问题ClassCastException转移到编译时期,方便程序员解决问题,让运行时期问题减少;

    (2).避免了强制转换的麻烦。

3.什么时候定义泛型

    通常在集合框架中很常见,当使用集合时,将集合中要存储的数据类型作为参数传递到<>中即可。

    只要见到<>就要定义泛型。

public class Demo {

    public static void main(String[]args) {

       //定义泛型

       ArrayList<String>al=new ArrayList<String>();

       al.add("");

       Iteratoriterator=al.iterator();

       while(iterator.hasNext())

       {

           System.out.println(iterator.next());

       }

    }

}

4.泛型类

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

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

//工具类

class Utils<QQ>

{

    //QQ表示要操作的引用数据类型

    private QQ qq;

    public void setObject(QQ qq)

    {

       this.qq=qq;

    }

    public QQ getObject()

    {

       return qq;

    }

}

    注意:静态方法不可以访问类上定义的泛型;如果静态方法操作的数据类型不确定,可以将泛型定义在方法上。

            class Demo<T>

{

    //将泛型定义在方法上

    public <A> void method_1()

    {

      

    }

    //静态方法不能访问类上的泛型

    public static <B> void method_2()

    {

      

    }

}

5.泛型定义在接口上

           interface Inter<T>

{

    void method(T t);

}

class Demo implementsInter<String>

{

    public void method()

    {

      

    }

}

6.泛型的限定

    ? 表示通配符(也可以理解为占位符);

    ?extends E :可以接收E或者E的子类类型.称为上限

    ?suoer E:可以接收E或者E的父类类型。称为下限。


---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! 


----------------------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值