欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java數(shù)組、泛型、集合在多態(tài)中的使用及對比

 更新時間:2017年03月01日 14:11:37   作者:小z同學  
本文主要介紹了java數(shù)組、泛型、集合在多態(tài)中的使用及對比。具有很好的參考價值,下面跟著小編一起來看下吧

我們在使用數(shù)組,泛型集合的過程中不可避免的會碰到多態(tài),或者說什么情況下能如何使用父數(shù)組引用子數(shù)組(集合、泛型)呢?

數(shù)組在多態(tài)中的使用

元素為父類型的數(shù)組引用可指向元素為子類型的數(shù)組對象

當數(shù)組被調用時由當前引用確定數(shù)組元素的類型

當元素為父類型的數(shù)組引用指向了元素為子類型的數(shù)組對象時,不可通過父類型的數(shù)組引用向集合加入除子類型及其下層級的之外的元素(可通過編譯,運行過程出錯)

/*驗證:
 *animals和dogs可以引用同一個數(shù)組
 *當animals引用數(shù)組時,數(shù)組元素為Animal類型
 *當dogs引用數(shù)組時,數(shù)組元素為Dog類型
*/
public class Animal{
  private void showClass(){
    System.out.println("數(shù)組元素為Animal類型");
  }
  public static void main(String[] args){
    //animals和dogs可以引用同一個數(shù)組
    Dog[] dogs = {new Dog(), new Dog()};
    Animal[] animals = dogs;
    //當animals引用數(shù)組時,數(shù)組元素為Animal類型
    animals[0].showClass();  
    //當dogs引用數(shù)組時,數(shù)組元素為Dog類型
    dogs[0].showClass();
    //不可通過父類型的數(shù)組引用向集合加入除子類型及其下層級的之外的元素(可通過編譯,運行過程出錯)
    animals[0] = new Animal(); 
  }
}
class Dog extends Animal{
  public void showClass(){
    System.out.println("數(shù)組元素為Dog類型");
  }
}

泛型在多態(tài)中的使用

ArrayList<父類型>無法引用ArrayList<子類型>

/*驗證:
 *animals無法引用dogs數(shù)組
 *
*/
import java.util.*;
public class Animal{
  public static void main(String[] args){
    //animals無法引用dogs數(shù)組
    ArrayList<Dog> dogs = new ArrayList<Dog>(); 
    ArrayList<Animal> animals = dogs;  /* 無法通過編譯 */
  }
}
class Dog extends Animal{
}

為了彌補泛型的缺陷,java引入了一種“萬用字符”——ArrayList<? extends object>

此類型集合可引用任何參數(shù)上繼承、實現(xiàn)了參數(shù)類型(包括參數(shù)類型本身)的集合

/*萬用字符
 *animals可以引用dogs集合
 *當animals引用集合時,集合元素為Dog類型
 *當dogs引用集合時,集合元素為Dog類型
 *無法通過animals對集合進行修改
 */
import java.util.*;
public class Animal{
  public void showClass(){
    System.out.println("集合元素為Animal類型");
  }
  public static void main(String[] args){
    //animals可以引用dogs數(shù)組
    ArrayList<Dog> dogs = new ArrayList<Dog>(); 
    dogs.add(new Dog());
    ArrayList<? extends Animal> animals = dogs;  
    //當animals引用集合時,集合元素為Dog類型
    animals.get(0).showClass();
    //當dogs引用集合時,集合元素為Dog類型
    dogs.get(0).showClass();
    //無法通過animals對集合進行修改(無法通過編譯)
    //animals.add(new Dog());
  }
}
class Dog extends Animal{
  public void showClass(){
    System.out.println("集合元素為Dog類型");
  }
}

集合在多態(tài)中的使用

當然List<object>集合可引用ArrayList<object>集合

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!

相關文章

  • Java使用SFTP上傳文件到服務器的簡單使用

    Java使用SFTP上傳文件到服務器的簡單使用

    這篇文章主要介紹了Java使用SFTP上傳文件到服務器的簡單使用,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-02-02
  • Java多維數(shù)組和Arrays類方法總結詳解

    Java多維數(shù)組和Arrays類方法總結詳解

    這篇文章主要介紹了Java多維數(shù)組和Arrays類方法總結詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • Spring @Primary和@Qualifier注解原理解析

    Spring @Primary和@Qualifier注解原理解析

    這篇文章主要介紹了Spring @Primary和@Qualifier注解原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • 如何在SpringBoot項目里進行統(tǒng)一異常處理

    如何在SpringBoot項目里進行統(tǒng)一異常處理

    這篇文章主要介紹了如何在SpringBoot項目里進行統(tǒng)一異常處理,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值。需要的小伙伴可以參考一下
    2022-07-07
  • java的時間類匯總(齊全)

    java的時間類匯總(齊全)

    這篇文章主要介紹了java的時間類匯總(齊全),文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下
    2022-09-09
  • Java二維數(shù)組查找功能代碼實現(xiàn)

    Java二維數(shù)組查找功能代碼實現(xiàn)

    這篇文章主要介紹了Java二維數(shù)組查找功能代碼實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • 使用Java Minio搭建自己的文件系統(tǒng)詳解

    使用Java Minio搭建自己的文件系統(tǒng)詳解

    這篇文章主要介紹了使用Java Minio搭建自己的文件系統(tǒng)的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2021-09-09
  • Java 5億整數(shù)大文件怎么排序

    Java 5億整數(shù)大文件怎么排序

    這篇文章主要介紹了Java 5億整數(shù)大文件怎么排序,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-03-03
  • Spring三種方法的注解自動注入問題

    Spring三種方法的注解自動注入問題

    這篇文章主要介紹了Spring三種方法的注解自動注入問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Hibernate之環(huán)境搭建及demo分享

    Hibernate之環(huán)境搭建及demo分享

    下面小編就為大家分享一篇Hibernate之環(huán)境搭建及demo,具有很好的參考價值,希望對大家有所幫助
    2017-11-11

最新評論