zoukankan      html  css  js  c++  java
  • java中的泛型机制

    • 泛型
      这种语法机制,只在程序编译阶段起作用,只是给编译器参考的。(运行阶段泛型没用)
    • 使用了泛型好处是什么?
      第一:集合中存储的元素类型统一。
      第二:从集合中取出的元素类型是泛型指定的类型,不需要进行大量的向下转型。
    • 泛型的缺点是什么?
      导致集合中存储的元素缺乏多样性。
    • 代码示例:
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    
    public class Demo {
        public static void main(String[] args) {
            /*使用泛型List<Animal>之后,
            表示List集合中只允许存储Animal类型的数据。
            用泛型来指定集合中存储的数据类型。*/
            List<Animal> list = new ArrayList<Animal>();
            /*指定List集合中只能存储Animal,
            那么存储String就编译报错了。这样用了泛型之后,
            集合中元素的数据类型更加统一了。*/
            list.add(new Animal());
            list.add(new Cat());
            /*这个表示迭代器迭代的是Animal类型。*/
            Iterator<Animal> it = list.iterator();
            while (it.hasNext()){
                /*使用泛型之后,每一次迭代返回的数据都是Animal类型。*/
                Animal a = it.next();
                /*这里不需要进行强制类型转换,直接调用*/
                a.move();
            }
        }
    }
    class Animal{
        public void move(){
            System.out.println("Animal move");
        }
    }
    class Cat extends Animal{
        public void move(){
            System.out.println("Cat move");
        }
    }
    

    输出:
    在这里插入图片描述

    • 类型自动推断
      1、JDK8之后引入自动类型推断机制。(又称为钻石表达式)
      2、上面的第10行代码改为:
    List<Animal> list = new ArrayList<>();
    
    • 自定义泛型
      1、自定义泛型的时候,<>尖括号中的是一个标识符,随便写。
      2、java源代码中经常出现的是:<E>和<T>,E是Element单词首字母。T是Type单词首字母。
      3、代码示例:
    public class Demo<qwe>{
        /*这里的qwe是标识符,随便写*/
        public void dosome(qwe o){
            System.out.println(o);
        }
    
        public static void main(String[] args) {
            Demo<String> demo = new Demo<>();
            demo.dosome("aaa");
            Demo<Integer> demo1 = new Demo<>();
            demo1.dosome(123);
        }
    }
    

    输出:
    在这里插入图片描述

  • 相关阅读:
    1022. D进制的A+B (20)
    1032. 挖掘机技术哪家强(20)
    1001. 害死人不偿命的(3n+1)猜想 (15)
    结构-06. 复数四则运算(15)
    结构-05. 有理数均值(20)
    结构-04. 通讯录的录入与显示(10)
    结构-03. 平面向量加法(10)
    软考错题合集之13-05-AM
    软考笔记第八天之法律发规与标准化知识
    软考笔记第七天之程序设计语言与语言处理程序基础
  • 原文地址:https://www.cnblogs.com/yu011/p/12818848.html
Copyright © 2011-2022 走看看