zoukankan      html  css  js  c++  java
  • Java泛型学习笔记

    一、什么是泛型:
    泛型的作用是用来规定一个类, 接口或方法所能接受的数据的类型. 就像在声明方法时指定参数一样, 我们在声明一个类, 接口或方法时, 也可以指定其"类型参数", 也就是泛型. 不同的是, 声明方法时我们给其参数指定一个值, 而给其泛型指定一个数据类型.
    二、基本使用方式:
    上面的概念啰嗦了许多, 其实我自己写的都累. 最简单有效的学习方法就是用一用嘛:

    1 List<String> list = new ArrayList<String>();

    这就规定了该List中只能存放String类型的数据. 但是有几点要注意:

    1. <>中放的必须是引用数据类型, 不能是基本数据类型如int, double;
    2. 前后的泛型必须一致. 如上面所示, 在声明时声明了一个List<String>, 在创建时也要new一个ArrayList<String>(), 而不能是ArrayList<Integer>()什么的, 既然有了这个规定, 因此在JDK1.7时就推出了一个新特性叫菱形泛型(The Diamond), 就是说后面的泛型可以省略直接写成<>, 反正前后一致, 如:
      1 List<String> list = new ArrayList<>()
    3. 泛型可以是任何引用类型, 因此也可以定义为Object类型. 但是Object是所有数据类型的父类, 加了相当于没加, 没什么卵用.

    三、使用泛型的好处:

    1. 提高安全性: 将运行期的错误转换到编译期. 如果我们在对一个对象所赋的值不符合其泛型的规定, 就会编译报错.
    2. 省去强转的麻烦: 比如我们在使用List时, 如果我们不使用泛型, 如:
      1 List l = new ArrayList();
      2 l.add("abc");
      3 String s = (String) l.get(0);

       当从List中取出元素时, 其类型会是默认的Object, 我们必须将其向下转型为String才能使用. 而使用泛型:

    1 List<String> l = new ArrayList<>();
    2 l.add("abc");
    3 String s = l.get(0);

       就可以保证存入和取出的都是String类型, 不必在进行cast了.

  • 相关阅读:
    基本背包问题
    linux 共享内存实现
    Linux内存管理原理
    从inet_pton()看大小端字节序
    linux线程的实现
    简述memcached中的一致哈希
    c语言实现面向对象OOC
    论记忆力
    关于编程内存泄漏
    一道常考fork题挖掘
  • 原文地址:https://www.cnblogs.com/zhenyu-go/p/5536236.html
Copyright © 2011-2022 走看看