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

Java類型通配符應(yīng)用實(shí)戰(zhàn)分析

 更新時(shí)間:2019年07月26日 11:44:58   作者:cakincqm  
這篇文章主要介紹了Java類型通配符應(yīng)用實(shí)戰(zhàn),簡單分析了Java類型通配符概念、原理并結(jié)合實(shí)例形式給出了Java類型通配符相關(guān)使用技巧,需要的朋友可以參考下

本文實(shí)例講述了Java類型通配符。分享給大家供大家參考,具體如下:

一 點(diǎn)睛

List<String>對(duì)象不能被當(dāng)成List<Object>對(duì)象使用,也就是說:List<String>類并不是List<Object>類的子類。

數(shù)組和泛型有所不同:假設(shè)Foo是Bar的一個(gè)子類型(子類或者子接口),那么Foo[]依然是Bar[]的子類型;但G<Foo>不是G<Bar>的子類型。 

為了表示各種泛型List的父類,我們需要使用類型通配符,類型通配符是一個(gè)問號(hào)(?),將一個(gè)問號(hào)作為類型實(shí)參傳給List集合,寫作:List<?>(意思是未知類型元素的List)。這個(gè)問號(hào)(?)被稱為通配符,它的元素類型可以匹配任何類型。

二 泛型的優(yōu)良設(shè)計(jì)

1 代碼

import java.util.*;
public class ArrayErr
{
  public static void main(String[] args)
  {
   // 定義一個(gè)Integer數(shù)組
   Integer[] ia = new Integer[5];
   // 可以把一個(gè)Integer[]數(shù)組賦給Number[]變量
   Number[] na = ia;   // A 處
   // 下面代碼編譯正常,但運(yùn)行時(shí)會(huì)引發(fā)ArrayStoreException異常
   // 因?yàn)?.5并不是Integer
   na[0] = 0.5;  // B 處
   List<Integer> iList = new ArrayList<>();
   // 下面代碼導(dǎo)致編譯錯(cuò)誤
   //List<Number> nList = iList; // C 處
  }
}

2 運(yùn)行

Exception in thread "main" java.lang.ArrayStoreException: java.lang.Double
    at ArrayErr.main(ArrayErr.java:23)

3 說明

A處的代碼不會(huì)引起編譯錯(cuò)誤,但會(huì)在B處引發(fā)運(yùn)行錯(cuò)誤。

B出的代碼直接引起編譯錯(cuò)誤。

這正是數(shù)組和泛型的區(qū)別,泛型的設(shè)計(jì)由于數(shù)組,能及早發(fā)現(xiàn)錯(cuò)誤而不是到運(yùn)行時(shí)才發(fā)現(xiàn)。

三 實(shí)戰(zhàn)——使用類型通配符

1 代碼

import java.util.*;
public class ArrayErr
{
  public static void main(String[] args)
  {
   List<String> c = new ArrayList<String>();
   c.add("第一個(gè)");
   c.add("第二個(gè)");
   test(c);
   // 下面這種用法是錯(cuò)誤的,這種類型通配不能加元素
   List<?> wrongList = new ArrayList<String>();
   //wrongList.add(new Object());
  }
  // 這種問號(hào)類型通配符表示各種泛型的父類,它的元素類型可以匹配任意類型,可以用到遍歷中
  public static void test(List<?> c)
  {
   for(int i=0;i<c.size();i++)
   {
     System.out.println(c.get(i));
   }
  }
}

2 運(yùn)行

第一個(gè)
第二個(gè)

3 說明

類型通配符可用于遍歷場(chǎng)景,不可用于添加場(chǎng)景。

更多java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java面向?qū)ο蟪绦蛟O(shè)計(jì)入門與進(jìn)階教程》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • java并發(fā)之AtomicInteger源碼分析

    java并發(fā)之AtomicInteger源碼分析

    AtomicInteger是java并發(fā)包下面提供的原子類,主要操作的是int類型的整型,通過調(diào)用底層Unsafe的CAS等方法實(shí)現(xiàn)原子操作。下面小編和大家一起學(xué)習(xí)一下
    2019-05-05
  • 淺談Java生成唯一標(biāo)識(shí)碼的三種方式

    淺談Java生成唯一標(biāo)識(shí)碼的三種方式

    我們經(jīng)常會(huì)遇到這樣的場(chǎng)景,需要生成一個(gè)唯一的序列號(hào)來表明某一個(gè)數(shù)據(jù)的唯一性,本文主要介紹了淺談Java生成唯一標(biāo)識(shí)碼的三種方式,感興趣的可以來了解一下
    2022-01-01
  • Java教程各種接口的介紹

    Java教程各種接口的介紹

    Java教程各種接口的介紹,需要的朋友可以參考一下
    2013-02-02
  • SpringBoot整合Freemarker的基本步驟

    SpringBoot整合Freemarker的基本步驟

    這篇文章主要介紹了SpringBoot整合Freemarker的基本步驟,添加依賴及添加相關(guān)配置的實(shí)例代碼詳解,代碼簡單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-02-02
  • SpringCloud Gateway自定義filter獲取body中的數(shù)據(jù)為空的問題

    SpringCloud Gateway自定義filter獲取body中的數(shù)據(jù)為空的問題

    這篇文章主要介紹了SpringCloud Gateway自定義filter獲取body中的數(shù)據(jù)為空,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • SpringBoot+Hutool+thymeleaf完成導(dǎo)出Excel的實(shí)現(xiàn)方法

    SpringBoot+Hutool+thymeleaf完成導(dǎo)出Excel的實(shí)現(xiàn)方法

    這篇文章主要介紹了SpringBoot+Hutool+thymeleaf完成導(dǎo)出Excel,本篇示例當(dāng)中不僅僅有后端,而且還提供了前端html,html當(dāng)中利用js將后端 輸出流直接下載為文件,需要的朋友可以參考下
    2022-03-03
  • java文件輸出流寫文件的幾種方法

    java文件輸出流寫文件的幾種方法

    這篇文章主要介紹了java文件輸出流寫文件的幾種方法,需要的朋友可以參考下
    2014-04-04
  • Java全面分析面向?qū)ο笾庋b

    Java全面分析面向?qū)ο笾庋b

    或許大家都聽說過java是純面向?qū)ο笳Z言,面向?qū)ο笏枷胍簿褪俏覀兂Uf的OOP,我們聽說最多的思想就是繼承,封裝,多態(tài),今天我們來講一講封裝
    2022-04-04
  • SpringBoot+Dubbo+Zookeeper知識(shí)整合過程詳解

    SpringBoot+Dubbo+Zookeeper知識(shí)整合過程詳解

    本文首先介紹了分布式系統(tǒng)的基本概念和分類,包括單一應(yīng)用架構(gòu)、垂直應(yīng)用架構(gòu)、分布式服務(wù)架構(gòu)和流動(dòng)計(jì)算架構(gòu),通過一個(gè)完整的Spring Boot + Dubbo + Zookeeper框架搭建示例,展示了如何將這些技術(shù)整合到一個(gè)實(shí)際的項(xiàng)目中,感興趣的朋友一起看看吧
    2025-02-02
  • SpringBoot部署SSL證書(JKS格式)

    SpringBoot部署SSL證書(JKS格式)

    文將介紹如何在Spring Boot應(yīng)用中部署SSL證書,以實(shí)現(xiàn)安全傳輸和保護(hù)數(shù)據(jù)隱私,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10

最新評(píng)論

抚远县| 桦甸市| 华容县| 中卫市| 沈丘县| 吉木萨尔县| 奇台县| 杨浦区| 平利县| 马公市| 来凤县| 南城县| 弋阳县| 双峰县| 乌兰察布市| 阳西县| 伽师县| 青岛市| 昌乐县| 贡山| 新余市| 屯留县| 恩平市| 临西县| 太原市| 兴宁市| 尼勒克县| 晋中市| 宁化县| 桑日县| 唐海县| 博白县| 正安县| 祁连县| 克什克腾旗| 江山市| 富蕴县| 阜阳市| 乐业县| 晋中市| 徐汇区|