一篇讓你徹底搞懂java泛型通配符的文章

来源:https://www.cnblogs.com/java265/archive/2022/06/17/16336090.html
-Advertisement-
Play Games

分類方式 按參數分: 有參構造(預設構造) & 無參構造 按類型分: 普通構造 & 拷貝構造 調用方式 括弧法 顯示法 隱式轉換法 PS:下方所有文本均以此代碼為基礎 1 class Person { 2 public: 3 //無參構造函數 4 Person() { 5 std::cout << ...


 轉自:

 http://www.java265.com/JavaJingYan/202206/16540949953608.html

泛型:通常定義一些以後使用的類型,在代碼編寫時,類型採用占位符的形式,當然這些占位符,也可以設置其上限,下限等。
下文筆者將用一篇文章,讓你徹底明白java泛型通配符,如下所示

泛型通配符的簡介

泛型通配符:“指可以匹配任意類型”的類型,我們將其稱之為“通配符”
在java中有三種類型的通配符,分別為:
  無界,有上限,有下限
 那麼他們分別表示什麼呢?下文筆者將一一道來,如下所示:
泛型無界通配符
無邊界通配符(Unbounded Wildcards):
   讓泛型可接收任意未知類型的數據
採用 ? 形式定義
 如: List<?> 
泛型有上界通配符
泛型上界通配符(Upper bounded Wildcards):
   讓泛型可接收指定類及其子類的數據
採用 ? extends E  形式定義
 如: List<? extends E>
    可接收類型為E,或者E的子類 
泛型有下界通配符
泛型下界通配符(Lower bounded Wildcards):
   讓泛型可接收指定類及其父類類的數據
採用 ? super E  形式定義
 如: List<? super E>
    可接收E類或者它的父類 

Java泛型通配符的示例分享

例:
定義一個方法可以列印任意類型集合的數據

public class GernericTest {
    public static void main(String[] args) throws Exception{
        List<Integer> list1 =new ArrayList<Integer>();
        List<String>  list2 =new ArrayList<String>();
        printCollection(list1);
        printCollection(list2);    
    } 
    public static void printCollection(Collection<Object> collection){
        for(Object obj:collection){
            System.out.println(obj);
        }  
    }
}
以上代碼會報錯:
語句 printCollection(list1); 報錯:
The method printCollection(Collection<Object>) in the type GernericTest is not applicable for the arguments (List<Integer>)
因為泛型不能使用繼承屬性,必須使用?通配符

正確的寫法:
public class GernericTest {
    public static void main(String[] args) throws Exception{
        List<Integer> list1 =new ArrayList<Integer>();
        List<String> list2 =new ArrayList<String>();
        printCollection(list1);
        printCollection(list2);
    }

    //定義泛型無界通配符
    public static void printCollection(Collection<?> collection){
        for(Object obj:collection){
            System.out.println(obj);
        }
    }
}

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 分享嘉賓:張政 京東 演算法工程師 編輯整理:AMS 周金星 出品平臺:DataFunTalk 導讀: 內容生態建設是近幾年互聯網快速發展的關鍵動因,也是AI化的重點方向之一。本文主要分享在京東廣告業務下內容理解體系的建設情況,從標簽化、內容準入、質量美學評價等多個角度探討內容理解能力的應用;同時整體 ...
  • SQL的函數 函數的定義 函數是指一段可以直接被另一段程式調用的程式或代碼; 字元串函數 MySQL常用的字元串函數 函數 功能 concat(s1,s2,···sN) 字元串拼接,將s1···sN拼接為一個字元串 lower(str) 將字元串str全部轉換為小寫 upper(str) 將字元串s ...
  • 華為應用內支付服務(In-App Purchases,IAP)為開發者提供便捷的應用內支付體驗和簡便的接入流程。開發者的應用集成IAP SDK後,調用IAP SDK介面,啟動IAP收銀台,即可實現應用內支付。在集成過程中,開發者可能會遇到報錯的問題,這時我們可以通過查找日誌中的tag的方法對問題快速 ...
  • 今天把平臺屬性的管理基本完成了,後臺管理做到現在基本也開始熟悉,確實就是對ElementUI的一個熟練程度。 一.平臺屬性管理 1.動態展示數據 先把介面弄好,應該在第三級標題選擇後進行發請求 靜態頁面搭建 渲染數據 屬性值列表,用到一個新組件 tag,並且這裡有多個屬性值,所以要遍歷,既然要在裡面 ...
  • 這裡給大家分享我在OpenLayers 地圖開發工作中總結出的一下代碼和註意點,希望對大家有所幫助 效果如下: 核心代碼展示:附帶講解註釋 var map = new ol.Map({ // 初始化地圖 target: 'map',// 選擇地圖對象 layers: [ new ol.layer.T ...
  • springboot整合ueditor實現圖片上傳和文件上傳功能 寫在前面: 在閱讀本篇之前,請先按照我的這篇隨筆完成對ueditor的前期配置工作: springboot+layui 整合百度富文本編輯器ueditor入門使用教程(踩過的坑)https://www.cnblogs.com/rain ...
  • 1、前言 作為嵌入式軟體開發,可能經常會使用命令行或者顯示屏等設備實現人機交互的功能,功能中通常情況都包含 UI 菜單設計;很多開發人員都會有自己的菜單框架模塊,防止重覆造輪子,網上有很多這種菜單框架的代碼,但是大多耦合性太強,無法獨立出來適配不同的菜單設計。 本文介紹一個降低了耦合性,完全獨立的菜 ...
  • 目錄 一.簡介 二.效果演示 三.源碼下載 四.猜你喜歡 零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 基礎 零基礎 OpenGL (ES) 學習路線推薦 : OpenGL (ES) 學習目錄 >> OpenGL ES 轉場 零基礎 O ...
一周排行
    -Advertisement-
    Play Games
  • Dapr Outbox 是1.12中的功能。 本文只介紹Dapr Outbox 執行流程,Dapr Outbox基本用法請閱讀官方文檔 。本文中appID=order-processor,topic=orders 本文前提知識:熟悉Dapr狀態管理、Dapr發佈訂閱和Outbox 模式。 Outbo ...
  • 引言 在前幾章我們深度講解了單元測試和集成測試的基礎知識,這一章我們來講解一下代碼覆蓋率,代碼覆蓋率是單元測試運行的度量值,覆蓋率通常以百分比表示,用於衡量代碼被測試覆蓋的程度,幫助開發人員評估測試用例的質量和代碼的健壯性。常見的覆蓋率包括語句覆蓋率(Line Coverage)、分支覆蓋率(Bra ...
  • 前言 本文介紹瞭如何使用S7.NET庫實現對西門子PLC DB塊數據的讀寫,記錄了使用電腦模擬,模擬PLC,自至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1.Windows環境下鏈路層網路訪問的行業標準工具(WinPcap_4_1_3.exe)下載鏈接:http ...
  • 從依賴倒置原則(Dependency Inversion Principle, DIP)到控制反轉(Inversion of Control, IoC)再到依賴註入(Dependency Injection, DI)的演進過程,我們可以理解為一種逐步抽象和解耦的設計思想。這種思想在C#等面向對象的編 ...
  • 關於Python中的私有屬性和私有方法 Python對於類的成員沒有嚴格的訪問控制限制,這與其他面相對對象語言有區別。關於私有屬性和私有方法,有如下要點: 1、通常我們約定,兩個下劃線開頭的屬性是私有的(private)。其他為公共的(public); 2、類內部可以訪問私有屬性(方法); 3、類外 ...
  • C++ 訪問說明符 訪問說明符是 C++ 中控制類成員(屬性和方法)可訪問性的關鍵字。它們用於封裝類數據並保護其免受意外修改或濫用。 三種訪問說明符: public:允許從類外部的任何地方訪問成員。 private:僅允許在類內部訪問成員。 protected:允許在類內部及其派生類中訪問成員。 示 ...
  • 寫這個隨筆說一下C++的static_cast和dynamic_cast用在子類與父類的指針轉換時的一些事宜。首先,【static_cast,dynamic_cast】【父類指針,子類指針】,兩兩一組,共有4種組合:用 static_cast 父類轉子類、用 static_cast 子類轉父類、使用 ...
  • /******************************************************************************************************** * * * 設計雙向鏈表的介面 * * * * Copyright (c) 2023-2 ...
  • 相信接觸過spring做開發的小伙伴們一定使用過@ComponentScan註解 @ComponentScan("com.wangm.lifecycle") public class AppConfig { } @ComponentScan指定basePackage,將包下的類按照一定規則註冊成Be ...
  • 操作系統 :CentOS 7.6_x64 opensips版本: 2.4.9 python版本:2.7.5 python作為腳本語言,使用起來很方便,查了下opensips的文檔,支持使用python腳本寫邏輯代碼。今天整理下CentOS7環境下opensips2.4.9的python模塊筆記及使用 ...