集合能夠存聽任意對象,只要把對象存儲在集合後,那麼對象就會被提高(向上轉型)爲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
集合類<泛型類型>對象名 = 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; } }