泛型

原创
2019/11/16 21:31
阅读数 76

1.1泛型

  集合可以存放任意对象,只要把对象存储在集合后,那么对象就会被提升(向上转型)为Object类型。每当我们取出对象时并且进行操作时,这是必须采用类型转换(向下转型)。

package com.day10;

/**
 * @author SFJ
 * @date 2019/11/16
 * @time 20:57
 **/
public class Test1 {
    public static void main(String[] args) {

       Collection c1=new ArrayList();
       c1.add(new Student(2016205711,"桑凤娇",22));
       c1.add(new Student(2016201002,"东方红",23));
       c1.add(new Student(2016201003,"小米多",24));
       //for(Object obj:c1){
       // Test4 student=(Test4)obj;
       // System.out.println(student);
       // }
       for(Object: c1)
       {

           Student s = (Stundent)obj;
           System.out.println(s);
       }

     }
}

  程序在运行时java.lang.ClassCastException, 由于集合中可以存储类型的元素,导致取出时强转引发运行时 ClassCastException。Collection 虽然可以存储各种对象,但实际上通常 Collection 只存储一 种类型即Object 型。因此在 JDK5 之后,新增了泛型(Generic)语法,让你在设计 API 时可 以指定类或方法支持泛型,这样我们使用 API 的时候就变得更为简洁,并通过了编译时期的语法检查。

    泛型:可以在类或者方法中预支的使用未知的类型,一般在创建对象时,将未知类型确定为具体类型,当没有指定泛型时,默认数据类型为Object类型。

1.2泛型的使用:

  • 消除类型转换
集合类<泛型类型>对象名 = new 集合类<>();
package com.day10;

import java.util.ArrayList;
import java.util.Collection;

/**
 * @author SFJ
 * @date 2019/11/16
 * @time 21:07
 **/
public class Test2 {
    public static void main(String[] args) {
        Collection<Student> students = new ArrayList<>();
        students.add(new Student("sang",21));
        students.add(new Student("feng",21));
        students.add(new Student("jiao",21));
        for (Student student:students)
        {
            System.out.println(student);
        }
    }
}
class Student{
    private String name;
    private int age;
    public Student(){}
public Student(String name,int age)
{
    this.name=name;
    this.age = age;
}
    public String getNamr() {
        return name;
    }

    public void setNamr(String namr) {
        this.name = namr;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
泛型有哪些好处?
  •  将运行时期的 ClassCastException,转移到编译时期,编译失败
  • 避免了类型强转的麻烦
展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部