Java之路---Day16(泛型)

来源:https://www.cnblogs.com/hpcz190911/archive/2019/11/03/11784910.html
-Advertisement-
Play Games

2019-11-02-23:25:26 目錄 1.泛型的概念: 2.泛型的定義和使用: 2.1定義和使用含有泛型的類: 2.2定義和使用含有泛型的方法: 2.3定義和使用含有泛型的介面: 泛型的概念: 泛型是一種未知的數據類型,當我門不知道使用什麼數據類型的時候,可以使用泛型,泛型也可以看成是一個變 ...


2019-11-02-23:25:26

目錄

  1.泛型的概念:

  2.泛型的定義和使用:

    2.1定義和使用含有泛型的類:

    2.2定義和使用含有泛型的方法:

    2.3定義和使用含有泛型的介面:


泛型的概念:

  泛型是一種未知的數據類型,當我門不知道使用什麼數據類型的時候,可以使用泛型,泛型也可以看成是一個變數,用來接受數據類型

  E e:Element 元素

  T t:Type 類型

泛型的定義和使用:

  我們在集合中會大量使用到泛型,用來靈活地將數據類型應用到不同的類、方法、介面當中,將數據類型作為參數進行傳遞

  定義和使用含有泛型的類:

    修飾符 class 類名<代表泛型的變數>{ }

 1 package demosummary.generic;
 2 
 3 public class GenericClass<E> {
 4     private E name;
 5 
 6     public GenericClass() {
 7     }
 8 
 9     public GenericClass(E name) {
10         this.name = name;
11     }
12 
13     public E getName() {
14         return name;
15     }
16 
17     public void setName(E name) {
18         this.name = name;
19     }
20 
21     @Override
22     public String toString() {
23         return "GenericClass{" +
24                 "name=" + name +
25                 '}';
26     }
27 }
 1 package demosummary.generic;
 2 
 3 public class GenericClassTest {
 4     public static void main(String[] args) {
 5         //不寫泛型則預設為Object類
 6         GenericClass gc = new GenericClass();
 7         gc.setName("預設為Object類");
 8         Object obj = gc.getName();
 9         System.out.println(obj);
10 
11         //使用泛型為Integer類
12         GenericClass<Integer> gci = new GenericClass<>();
13         gci.setName(1);
14         Integer integer = gci.getName();
15         System.out.println(integer);
16     }
17 }

  定義和使用含有泛型的方法:

    格式:修飾符<泛型> 返回值類型 方法名(參數列表(使用泛型)){

      語句體;

    }

  註意:含有泛型的方法,在調用方法的時候確定泛型的數據類型,傳遞什麼類型的參數,泛型就是什麼類型

 1 package demosummary.generic;
 2 
 3 public class GenericMethod {
 4     //定義一個含有泛型的方法
 5     public <E> void method(E e){
 6         System.out.println(e);
 7     }
 8 
 9     //定義一個含有泛型的靜態方法
10     public static <M> void method01(M m){
11         System.out.println(m);
12     }
13 }
 1 package demosummary.generic;
 2 
 3 public class GenericMethodTest {
 4     public static void main(String[] args) {
 5         //創建一個GenericMethod對象
 6         GenericMethod gm = new GenericMethod();
 7         gm.method(1);//傳入Integer類型
 8         gm.method("字元串");//傳入String類型
 9         gm.method(1.1);//傳入Float類型
10         gm.method(true);//傳入Boolean類型
11 
12         //靜態方法建議通過類名調用
13         GenericMethod.method01(2);//傳入Integer類型
14         GenericMethod.method01("靜態方法");//傳入String類型
15     }
16 }

  定義和使用含有泛型的介面:

    格式:

      修飾符 interface介面名<代表泛型的變數>{ }

     第一種使用方式:

      定義介面的實現類,實現介面,指定介面的泛型

    第二種使用方式:

      介面使用什麼泛型,實現類就使用什麼泛型,類跟著介面走

1 package demosummary.generic;
2 //定義一個抽象類
3 public interface GenericInterface<E> {
4     //創建一個抽象方法
5     public void method(E e);
6 }
1 package demosummary.generic;
2 
3 public class GenericInterface01 implements GenericInterface<String>{
4     //重寫抽象方法
5     @Override
6     public void method(String s) {
7         System.out.println(s);
8     }
9 }
1 package demosummary.generic;
2 
3 public class GenericInterface02<E> implements GenericInterface<E>{
4     //重寫抽象類中的抽象方法
5     @Override
6     public void method(E e) {
7         System.out.println(e);
8     }
9 }
 1 package demosummary.generic;
 2 
 3 public class GenericInterfaceTest {
 4     public static void main(String[] args) {
 5         //創建一個GenericInterface01對象,指定實現類泛型為String類型
 6         GenericInterface01 gi01 = new GenericInterface01();
 7         gi01.method("泛型指定為字元串");
 8 
 9         //創建一個GenericInterface02對象,介面泛型為Integer類型,實現類也為Integer類型
10         GenericInterface02<Integer> gi02 = new GenericInterface02<>();
11         gi02.method(2);
12 
13         //創建一個GenericInterface02對象,介面泛型為String類型,實現類也為String類型
14         GenericInterface02<String> gi021 = new GenericInterface02<>();
15         gi021.method("介面為什麼泛型,實現類就是什麼泛型");
16     }
17 }

 


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

-Advertisement-
Play Games
更多相關文章
  • 已經使用uni app開發併發布了一個跨端小程式啦,嘻嘻嘻!
  • React Ref 和 React.forwardRef的使用 ...
  • 基礎類型 介紹 為了讓程式有價值,我們需要能夠處理最簡單的數據單元:數字,字元串,結構體,布爾值等。 TypeScript支持與JavaScript幾乎相同的數據類型,此外還提供了實用的枚舉類型方便我們使用。 布爾值 最基本的數據類型就是簡單的true/false值,在JavaScript和Type ...
  • 本文將為您描述如何解決 eharts.js報錯 Uncaught TypeError: Cannot read property 'getAttribute' of null 的問題 根據報錯信息查找原因發現是因為 實例化 echarts 的元素不存在(未找到指定的元素),查看官方文檔發現: 基於準 ...
  • 前端 JS 獲取 Image 圖像 寬高 尺寸 簡介 項目中用到獲取圖片的原始尺寸,然後適配寬高;網上的大部分前端解決方案,都是new Image()後,在onload事件中獲取image的尺寸。 在圖片數量較多的時候,這樣的獲取效率實在是低下。所有就有了這篇文章。通過直接讀取解析文件的位元組碼來獲取 ...
  • Web前端要如何學?這是很多新手都會問的問題,究竟web前端開發要學什麼內容?學習起來難不難? ...
  • 我只安裝了webpack,沒有安裝webpack cli,第一次輸入webpack打包時,提示 輸入yes後報錯 解決辦法:輸入命令npm install webpack cli g全局安裝一下webpack cli 再次運行webpack命令打包,出現新錯誤 解決辦法:根據錯誤提示信息,打開nod ...
  • 1 #需求 遍歷文件夾中所有的子文件夾及子文件--用遞歸實現 2 3 '''''' 4 ''' 5 偽代碼 6 1、遍歷根目錄--listdir for 7 得到第一級子文件夾(不包含子文件夾的子文件)和文件 8 2、判斷是文件還是文件夾 9 如果是文件,就直接列印文件名 10 如果是文件夾(全路徑... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...