最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

當(dāng)數(shù)組被調(diào)用時由當(dāng)前引用確定數(shù)組元素的類型

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

/*驗證:
 *animals和dogs可以引用同一個數(shù)組
 *當(dāng)animals引用數(shù)組時,數(shù)組元素為Animal類型
 *當(dāng)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;
    //當(dāng)animals引用數(shù)組時,數(shù)組元素為Animal類型
    animals[0].showClass();  
    //當(dāng)dogs引用數(shù)組時,數(shù)組元素為Dog類型
    dogs[0].showClass();
    //不可通過父類型的數(shù)組引用向集合加入除子類型及其下層級的之外的元素(可通過編譯,運(yùn)行過程出錯)
    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{
}

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

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

/*萬用字符
 *animals可以引用dogs集合
 *當(dāng)animals引用集合時,集合元素為Dog類型
 *當(dāng)dogs引用集合時,集合元素為Dog類型
 *無法通過animals對集合進(jìn)行修改
 */
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;  
    //當(dāng)animals引用集合時,集合元素為Dog類型
    animals.get(0).showClass();
    //當(dāng)dogs引用集合時,集合元素為Dog類型
    dogs.get(0).showClass();
    //無法通過animals對集合進(jìn)行修改(無法通過編譯)
    //animals.add(new Dog());
  }
}
class Dog extends Animal{
  public void showClass(){
    System.out.println("集合元素為Dog類型");
  }
}

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

當(dāng)然List<object>集合可引用ArrayList<object>集合

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

相關(guān)文章

  • java網(wǎng)上圖書商城(1)User模塊

    java網(wǎng)上圖書商城(1)User模塊

    這篇文章主要介紹了java網(wǎng)上圖書商城,User模塊,實現(xiàn)用戶注冊功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • Struts2源碼分析之ParametersInterceptor攔截器

    Struts2源碼分析之ParametersInterceptor攔截器

    這篇文章主要介紹了Struts2源碼分析之ParametersInterceptor攔截器,ParametersInterceptor攔截器其主要功能是把ActionContext中的請求參數(shù)設(shè)置到ValueStack中,,需要的朋友可以參考下
    2019-06-06
  • 教你如何精準(zhǔn)統(tǒng)計出你的接口

    教你如何精準(zhǔn)統(tǒng)計出你的接口"QPS"

    今天小編就為大家分享一篇關(guān)于QPS的精準(zhǔn)計算方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2021-08-08
  • Spring Boot整合elasticsearch的詳細(xì)步驟

    Spring Boot整合elasticsearch的詳細(xì)步驟

    這篇文章主要介紹了Spring Boot整合elasticsearch的詳細(xì)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • SpringBoot整合Javamail實現(xiàn)郵件發(fā)送的詳細(xì)過程

    SpringBoot整合Javamail實現(xiàn)郵件發(fā)送的詳細(xì)過程

    日常開發(fā)過程中,我們經(jīng)常需要使用到郵件發(fā)送任務(wù),比方說驗證碼的發(fā)送、日常信息的通知等,下面這篇文章主要給大家介紹了關(guān)于SpringBoot整合Javamail實現(xiàn)郵件發(fā)送的詳細(xì)過程,需要的朋友可以參考下
    2022-10-10
  • java高并發(fā)寫入用戶信息到數(shù)據(jù)庫的幾種方法

    java高并發(fā)寫入用戶信息到數(shù)據(jù)庫的幾種方法

    本文主要介紹了java高并發(fā)寫入用戶信息到數(shù)據(jù)庫的幾種方法,具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03
  • Spring定時任務(wù)只執(zhí)行一次的原因分析與解決方案

    Spring定時任務(wù)只執(zhí)行一次的原因分析與解決方案

    在使用Spring的@Scheduled定時任務(wù)時,你是否遇到過任務(wù)只執(zhí)行一次,后續(xù)不再觸發(fā)的情況?這種情況可能由多種原因?qū)е?如未啟用調(diào)度、線程池問題、異常中斷等,本文將深入分析Spring定時任務(wù)只執(zhí)行一次的原因,并提供完整的解決方案,需要的朋友可以參考下
    2025-03-03
  • Spring Boot報錯:No session repository could be auto-configured, check your configuration的解決方法

    Spring Boot報錯:No session repository could be auto-configured

    這篇文章主要給大家介紹了關(guān)于Spring Boot報錯:No session repository could be auto-configured, check your configuration的解決方法,文中給出了詳細(xì)的解決方法,對遇到這個問題的朋友們具有一定參考價值,需要的朋友下面來一起看看吧。
    2017-07-07
  • java  中MyBatis注解映射的實例詳解

    java 中MyBatis注解映射的實例詳解

    這篇文章主要介紹了java 中MyBatis注解映射的實例詳解的相關(guān)資料,這里提供實例幫助大家理解這部分內(nèi)容,需要的朋友可以參考下
    2017-09-09
  • RabbitMQ消息單獨(dú)與批量的TTL詳細(xì)介紹

    RabbitMQ消息單獨(dú)與批量的TTL詳細(xì)介紹

    這篇文章主要介紹了RabbitMQ消息單獨(dú)與批量的TTL,TTL全名是Time To Live存活時間,表示當(dāng)消息由生產(chǎn)端存入MQ當(dāng)中的存活時間,當(dāng)時間到達(dá)的時候還未被消息就會被自動清除,感興趣的同學(xué)可以參考下文
    2023-05-05

最新評論

门头沟区| 枞阳县| 靖西县| 周宁县| 彰化市| 武夷山市| 迁安市| 礼泉县| 卢氏县| 辽中县| 苍溪县| 孙吴县| 旅游| 辰溪县| 英超| 罗定市| 泾阳县| 游戏| 南通市| 铜梁县| 贡觉县| 左权县| 资溪县| 眉山市| 连州市| 汕头市| 南充市| 余庆县| 谷城县| 夏邑县| 蚌埠市| 沂南县| 平阴县| 阿瓦提县| 泰来县| 化隆| 双江| 错那县| 乐昌市| 柳林县| 商南县|