黑马程序员技术交流社区

标题: 【上海校区】泛型使用 [打印本页]

作者: 偷树的光头强    时间: 2019-11-14 17:13
标题: 【上海校区】泛型使用
                                                              泛型使用
一、泛型的概述
泛型的格式:
<具体的数据类型>
使用格式:
ArrayList<限定集合中的数据类型>  list = new  ArrayList<限定集合中的数据类型>();
说明:给集合加泛型,就是让集合中只能保存具体的某一种数据类型。

说明:由于创建ArrayList集合的时候就已经限定集合中只能保存String类型的数据,所以编译的时候保存其他的数据类型就会报错,
这样就达到了我们上述保存数据的目的了。
二、泛型的好处

[Java] 纯文本查看 复制代码
public class GenericDemo2 {
        public static void main(String[] args) {
        Collection<String> list = new ArrayList<String>();
        list.add("abc");
        list.add("itcast");
        // list.add(5);//当集合明确类型后,存放类型不一致就会编译报错
        // 集合已经明确具体存放的元素类型,那么在使用迭代器的时候,迭代器也同样会知道具体遍历元素类型
        Iterator<String> it = list.iterator();
        while(it.hasNext()){
            String str = it.next();
            //当使用Iterator<String>控制元素类型后,就不需要强转了。获取到的元素直接就是String类型
            System.out.println(str.length());
        }
        }
}

注意:泛型是数据类型的一部分,我们将类名与泛型合并一起看做数据类型。
三、泛型的注意事项
ArrayList<int> list = new ArrayList<int>();//错误的

ArrayList<Object> list = new ArrayList<String>();//错误的

ArrayList<String> list = new ArrayList<>();//正确的
注意:现在的开发中,泛型已经成为编写代码的规范
四、自定义泛型
在集合中,不管是接口还是类,它们在定义的时候类或接口名的后面都使用<标识符>,当我们在使用的时候,可以指定其中的类型。
如果当前的类或接口中并没有<标识符>,我们在使用的时候也不能去指定类型。
举例:比如我们之前所学习的集合ArrayList类:
new ArrayList<E>
说明:在ArrayList类上有一个泛型的参数:E

<标识符>
这里的标识符可以是任意的字母、数字、下划线和 $ 。但是这里一般规范使用单个大写字母。
五、受限泛型
设置泛型的时候,实际上是可以任意设置的,只要是类就可以设置。但是在JAVA的泛型中可以指定一个泛型的上限下限
泛型的上限

例如:? extends Person :?代表的是一种类型,当前这个类型可以是Person本身,也可以是Person的子类。

泛型的下限

例如: ? super Student :?代表当前的类型可以是Student类型,也可以是Student的父类类型。









欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2