使用泛型的好处与定义和使用含有泛型的类

使用泛型的好处

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

package Collection_Demo01;

import java.util.ArrayList;
import java.util.Iterator;

public class Demo04_Demo01Generic {
    public static void main(String[] args) {
        show02();
    }
            /*
            创建集合对象,使用泛型好处:
1.避免了类型转换的麻烦,存储的是什么类型,取出的就是什么类型
2.把运行期异常(代码运行之后会抛出的异常),提升到了编译期(写代码的时候会报错)弊端:
泛型是什么类型,只能存储什么类型的数据
             */
    private static void show02() {
        ArrayList<String> list = new ArrayList<>();
        list.add("abc");
        //list,add (1 ); //add(java.Lang.string)in ArrayList cannot be applied to (int)
        //使用迭代器遍历list集合
        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()){
            String s = iterator.next();
            System.out.println(s+"->"+s.length());
        }

    }

    /*
   创建集合对象,不使用泛型
   好处:
    集合不使用泛型,默认的类型就是object类型,可以存储任意类型的数据
   弊端:
    不安全,会引发异常
     */
    private static void show01() {
        ArrayList list = new ArrayList<>();
            list.add("abc");
            list.add(1);

        //使用迭代器遍历List集合
        // 获取迭代器
        Iterator iterator = list.iterator();
        //使用迭代器中的方法hasNext和next遍历集合while(it.hasNext(O)i
        while (iterator.hasNext()){
            //取出元素也是object类型
            Object next = iterator.next();
            System.out.println(next);

            //想要使用string类特有的方法, Length获取字符串的长度;不能使用多态 object obj = "abc";
            //需要向下转型
            String  s =(String)next;
            System.out.println(s.length());

        }


    }
}

泛型的定义与使用
我们在集合中会大量使用到泛型,这里来完整地学习泛型知识。
泛型,用来灵活地将数据类型应用到不同的类、方法、接口当中。将数据类型作为参数进行传递。

定义和使用含有泛型的类
定义格式:|

修饰符class类名<代表泛型的变量>{}
package Generic01_Demo01;
/*
定义一个含有泛型的类,模拟Arraylist集合
泛型是一个未知的数据类型,当我们不确定什么什么数据类型的时候,可以使用泛型泛型可以接收任意的数据类型,可以使用Integer,string,student. . .
创建对象的时候确定泛型的数据类型
 */
public class GenericClass<E> {
    private E  name;

    public E getName() {
        return name;
    }

    public void setName(E name) {
        this.name = name;
    }
}

 

package Generic01_Demo01;

public class Demo02GenericClass {
    public static void main(String[] args) {
        //不写泛型默认为Obectle类型
        GenericClass genericClass = new GenericClass();
        genericClass.setName("只能是字符串");
        Object name = genericClass.getName();
        //创建Genericclass对象,泛型使用Integer类型
        GenericClass<Integer> genericClass1 = new GenericClass<>();
        genericClass1.setName(1);

        Integer name1 = genericClass1.getName();
        System.out.println(name1);

        //创建Genericclass对象,泛型使用string类型
        GenericClass<String> genericClass2 = new GenericClass<>();
        genericClass2.setName("小明");
        String name2 = genericClass2.getName();
        System.out.println(name2);


    }
}

 

 

 

posted @ 2022-07-06 10:40  zj勇敢飞,xx永相随  阅读(49)  评论(0编辑  收藏  举报