泛型

1.泛型的概念

 

2.使用泛型和不适用泛型的区别

package day7.demo1;
/*
* 什么情况下使用泛型? 不知道使用什么类型的时候使用泛型
*E  e :Element 元素
* T t:Type 类型
* */

import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Iterator;

public class 泛型 {
    public static void main(String[] args) {

        nousingfx();
    }
    /*不使用泛型
    好处:集合不适用泛型,默认就是object类型,可以存储任意类型的数据
    弊端:不安全,容易引发异常
    *
    *
    * */
    public static void nousingfx(){

        ArrayList list=new ArrayList();
        list.add("string1");
        list.add(1);
        //遍历集合:
        Iterator it  = list.iterator();
        while (it.hasNext()){
            Object s=it.next();
            System.out.println(s);
            // 多态,不能使用子类特有有的方法 object obj="abc",需要向下转型
            String s1=(String)s;
            //存的时候,存的是任意类型,当遇到1 时候 还使用字符串的特有方法s.length() 回报错,这种错误在运行期间才发现:ClassCastException
             System.out.println(((String) s).length());

        }


    }



    /*使用泛型
    好处:1.避免类型转化的麻烦,取出什么就是什么类型
         2.把运行期异常(代码运行之后回抛出异常),提升到了编译器(写代码的时候回报错)
    弊端:泛型是什么类型,只能存储什么类型的数据。
     *
     *
     * */

  public static void usingfx(){

      ArrayList<String> arrs=new ArrayList<>();
      arrs.add("string1");
      arrs.add("string2");
      //遍历集合:
      Iterator<String> its  = arrs.iterator();
      while (its.hasNext()){
          String s=its.next();
          System.out.println("使用字符串特有的功能:字符串的长度是"+s.length());
      }


  }


}

3.自定义泛型类

package day7.demo1;

public class customGeneric <E>{

    private E Name;

    public E getName() {
        return Name;
    }

    public void setName(E name) {
        Name = name;
    }
}

使用:

package day7.demo1;

public class customGenericDemo {
    public static void main(String[] args) {
        //创建String 类型的自定发现泛型类
        customGeneric <String> cs=new customGeneric<>();
        //添加string 类型的数据
        cs.setName("string1");
        System.out.println(cs.getName());

        //创建Integer 类型的自定发现泛型类
        customGeneric <Integer> cit=new customGeneric<>();
        //添加string 类型的数据
        cit.setName(1);
        System.out.println(cit.getName());
    }
}

3.自定义泛型方法

 

posted @ 2021-11-09 14:01  程序杨%  阅读(33)  评论(0)    收藏  举报