泛型

1.1泛型

  集合能夠存聽任意對象,只要把對象存儲在集合後,那麼對象就會被提高(向上轉型)爲Object類型。每當咱們取出對象時而且進行操做時,這是必須採用類型轉換(向下轉型)。java

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 的時候就變得更爲簡潔,並經過了編譯時期的語法檢查。this

    泛型:能夠在類或者方法中預支的使用未知的類型,通常在建立對象時,將未知類型肯定爲具體類型,當沒有指定泛型時,默認數據類型爲Object類型。spa

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,轉移到編譯時期,編譯失敗
  • 避免了類型強轉的麻煩
相關文章
相關標籤/搜索