java学习:泛型的基础知识

希望能得到高人的指点,不胜感激

1,引入泛型的java版本

泛型是在java 5.0及更高的版本中出现的特性

 

2,什么是泛型

    

    泛型是java语言扩展到一种类型,这种类型已参数化的方式来定义类

 

3,引入泛型的动机(泛型的作用)

 

     1)类型检查(即:类型安全)

           由于在定义泛型时候,就已经限制了参数类型,所以编译器就能通过泛型的参数类型来检查 引用变量在使用该泛型时,对类型进行检查,如何把符合就会在编译时报错。这样把运行时可能出现的类型错误,在编译期间就可以检查出来了

 

     2)消除了代码编写时的强制类型转换

           由于参数化类型的限制,所以,我们不需要进行强制类型的转换,注意:这里是我们的代码中不需要强制类型转换,按照参考文献的说明,实质在编译器编译的过程中,将强制转换的代码生成在二进制代码中

          举个例子:

             List<Integer> list = new ArrayList<Integer>();

             list.add(new Integer(1));

             Integer a = list.get(0);        // 注意这行代码,如果不是用泛型,这应该是:Integer a = (Inteager) map.get(0);

 

           这里假设要能在list使用其他类型时,就用通配符?来解决

           如何来将一个方法定义成一个可以接受不同的泛型类型呢?

           如:

           可以将List<Integer>,List<String>的类型变量传给保护List<?>形式参数的方法

           我觉得这里可以畸形的理解成泛型的继承关系

     3)性能的提高

          关于性能的提高,这个我确实还没完全理解到?忘高人指点

 

4,泛型的运行机制

        这点我还不明白

5,如何使用泛型

     1,泛型的自定义

         泛型的自定义必须是一个或者多个形式参数的形式来定义

         如类库中的Map:

         public interface Map<K,V>

         {

                public void put(K key, V value);

                public V get(K key);

        

          }

         泛型的声明和实例化时候,就应该明确指明K,V的类型,这样编译器就能在编译期间对类型参数具体的绑定

         如:

            Map<Integer,String> map = new HashMap<Integer, String>(); 

 

         附:

         形式参数的推荐命名方式

        

  • K —— 键,比如映射的键。
  • V —— 值,比如 ListSet 的内容,或者 Map 中的值。
  • E —— 异常类。
  • T —— 泛型。

6,何时使用泛型

         在什么时候恰当的使用泛型呢?这点我还不明白

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值