关闭

黑马程序员--泛型

标签: java遍历黑马程序员
382人阅读 评论(0) 收藏 举报
分类:

泛型

一、泛型基础

         1、泛型只作用于编译器,编译器是一行一行的检查的

         2、ArrayList<E>中的E称为类型变量或类型参数

         3、整个ArrayList<Integer>称为参数化类型

         4、ArrayList<Integer>中Integer称为类型参数的实例或实际类型参数

         5、ArrayList<Integer>中的<>念typeof.

         6、ArrayList称为原始类型

         7、参数化类型可以引用一个原始类型的对象,编译器警告

         8、原始类型可以引用一个参数化类型的对象,编译器警告

         9、参数化类型不考虑类型参数的继承关系。

       10、在创建数组实例时,数组的元素不能使用能够参数化的类型。

       11、通配符?,通配符可以引用其他各种类型化的类型,?定义的变量主要用作引用那个,可以调用与参数无关的方法,不能调用与参数化有关的方法。

        12、通配符的上边界ArrayList<? extends Number>

        13、通配符的下边界ArrayList<? super Integer>

二、泛型的应用


在决定使用 List 还是使用 ArrayList 类(两者具有类似的功能)时,记住 List 类在大多数情况下执行得更好并且是类型安全的。如果对 List 类的类型 T 使用引用类型,则两个类的行为是完全相同的。但是,如果对类型 T 使用值类型,则需要考虑实现和装箱问题。

如果对类型 T 使用值类型,则编译器将特别针对该值类型生成 List 类的实现。这意味着不必对 List 对象的列表元素进行装箱就可以使用该元素,并且在创建大约 500 个列表元素之后,不对列表元素装箱所节省的内存将大于生成该类实现所使用的内存。

import java.util.ArrayList;

import java.util.List;

 

//声明一个泛型类  

public classTestGennericList {

    public static void main(String[] args) {

        // 声明一个List对象,只加入string参数

        List<String>names = newArrayList<String>();

        names.add("乔峰");

        names.add("欧阳峰");

        names.add("马蜂");

        // 遍历List

        for (String name : names) {

            System.out.println(name);

        }

        System.out.println("-----");

        // 向List中插入元素

        names.add(1, "张三峰");

        // 移除指定元素

        names.remove("马蜂");

        for (String name : names) {

            System.out.println(name);

        }

    }

}

泛型的用法还有很多种,如泛型方法,泛型委托,泛型接口等。

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:4661次
    • 积分:161
    • 等级:
    • 排名:千里之外
    • 原创:12篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档