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

Java中`void`和`Void`的區(qū)別和特性詳解

 更新時間:2026年03月13日 10:47:40   作者:李少兄  
這篇文章主要介紹了Java中`void`和`Void`的區(qū)別和特性的相關資料,void一般用于函數(shù),表示沒有返回結果,是java的一個關鍵字,Void是一種類型,例如給Void引用賦值null,不可以繼承與實例化,需要的朋友可以參考下

前言

在 Java 編程中,voidVoid 是兩個容易混淆的概念。雖然它們看起來相似,但實際上有著截然不同的用途和特性。

void關鍵字

定義

  • void 是 Java 中的一個關鍵字。
  • 用于方法聲明中,表示該方法不返回任何值。

用途

  • 當一個方法執(zhí)行某些操作(如打印、修改數(shù)據(jù)等),但不需要返回結果時,可以使用 void 作為返回類型。
  • 方法內(nèi)部可以有任意數(shù)量的語句,但不能有 return 語句返回一個值。不過,可以使用 return; 來提前結束方法。

示例

public class Example {
    public static void main(String[] args) {
        // 調用一個 void 方法
        printHello();
    }

    // 定義一個 void 方法
    public static void printHello() {
        System.out.println("Hello, World!");
    }
}

在這個例子中,printHello 方法沒有任何返回值,它只是簡單地打印一條消息。

Void類

定義

  • Voidjava.lang 包中的一個類。
  • 它是 void 關鍵字的引用類型包裝類。
  • Void 類是一個不可實例化的類(即不能創(chuàng)建 Void 對象)。
  • Void 類只有一個靜態(tài)字段 NULL,通常用來表示沒有實際的 Void 值。

用途

  • 主要用于泛型(Generics)中,因為泛型不能直接使用基本類型或 void 關鍵字。
  • 在某些情況下,特別是使用函數(shù)式接口(如 ConsumerSupplier)時,Void 可以用來表示沒有返回值的情況。

示例

泛型中的使用

import java.util.ArrayList;
import java.util.List;

public class VoidExample {
    public static void main(String[] args) {
        // 創(chuàng)建一個 List<Void>,但實際上我們不會真正存儲 Void 實例
        List<Void> voidList = new ArrayList<>();
        
        // 嘗試添加 null 到列表中
        voidList.add(null);
        
        // 打印列表
        for (Void v : voidList) {
            System.out.println(v);  // 輸出: null
        }
    }
}

在這個例子中,雖然我們創(chuàng)建了一個 List<Void>,但由于 Void 類不可實例化,我們只能將 null 添加到列表中。

函數(shù)式接口中的使用

import java.util.function.Consumer;

public class VoidExample {
    public static void main(String[] args) {
        // 使用 Consumer<Void> 表示一個消費者,它接受一個 Void 類型的參數(shù)
        Consumer<Void> consumer = (v) -> {
            System.out.println("This is a consumer that takes no input.");
        };
        
        // 傳遞 null 作為 Void 類型的值
        consumer.accept(null);
    }
}

在這個例子中,Consumer<Void> 表示一個消費者,它接受一個 Void 類型的參數(shù)。由于 Void 類不可實例化,我們傳遞 null 作為參數(shù)。

獲取Void的唯一實例

public class VoidExample {
    public static void main(String[] args) {
        // 獲取 Void 的唯一實例
        Void aVoid = null;  // 或者 Void aVoid = Void.TYPE;
        
        // 打印 Void 實例
        System.out.println(aVoid);  // 輸出: null
    }
}

在這個例子中,Void 類有一個靜態(tài)字段 NULL,我們可以使用 nullVoid.TYPE 來表示這個唯一的實例。

實際代碼例子

使用R<Void>的刪除操作

假設你有一個 RESTful API 控制器,其中包含一個刪除記錄的方法:

import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class WarehouseController {

    private final IMmsWarehouseDetailedAppService iMmsWarehouseDetailedAppService;

    public WarehouseController(IMmsWarehouseDetailedAppService iMmsWarehouseDetailedAppService) {
        this.iMmsWarehouseDetailedAppService = iMmsWarehouseDetailedAppService;
    }

    @DeleteMapping("/deleteById/{detailId}")
    public R<Void> deleteById(@PathVariable Long detailId) {
        boolean success = iMmsWarehouseDetailedAppService.deleteById(detailId);
        return toAjax(success);
    }

    public static <T> R<T> toAjax(boolean success) {
        if (success) {
            return new R<>(200, "操作成功", null);
        } else {
            return new R<>(500, "操作失敗", null);
        }
    }
}

// 自定義響應類
class R<T> {
    private int code;
    private String message;
    private T data;

    public R(int code, String message, T data) {
        this.code = code;
        this.message = message;
        this.data = data;
    }

    // Getter 和 Setter
    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }
}

解析

  1. @DeleteMapping 注解

    • @DeleteMapping 用于映射 HTTP DELETE 請求到特定的處理方法。
    • /deleteById/{detailId} 是請求路徑,其中 {detailId} 是路徑變量,表示要刪除的記錄的 ID。
  2. 方法簽名

    • public R<Void> deleteById(@PathVariable Long detailId)
      • R<Void> 表示返回一個泛型類型 R,其泛型參數(shù)是 Void。這意味著該方法不會返回具體的業(yè)務數(shù)據(jù),只會返回一個狀態(tài)信息。
      • @PathVariable Long detailId 表示從 URL 路徑中提取 detailId 參數(shù),并將其作為方法參數(shù)傳遞。
  3. 方法體

    • return toAjax(iMmsWarehouseDetailedAppService.deleteById(detailId));
      • iMmsWarehouseDetailedAppService.deleteById(detailId) 調用服務層的方法來刪除指定 ID 的記錄。
      • toAjax(...) 是一個工具方法,將服務層的返回結果轉換為一個 R 類型的對象,通常包含成功或失敗的狀態(tài)碼和消息。
  4. 自定義響應類 R<T>

    • R<T> 是一個泛型類,用于封裝 API 的響應數(shù)據(jù)。
    • 它包含三個屬性:code(狀態(tài)碼)、message(消息)和 data(數(shù)據(jù))。
    • data 屬性的類型是泛型 T,當 TVoid 時,表示該方法不返回具體的業(yè)務數(shù)據(jù)。
  5. 工具方法 toAjax

    • toAjax 是一個工具方法,用于將布爾值轉換為 R 對象。
    • 如果刪除成功,返回 R<Void> 對象,包含成功狀態(tài)碼和消息;否則,返回失敗狀態(tài)碼和消息。

總結

  • void 是一個關鍵字,用于方法聲明,表示該方法不返回任何值。
  • Void 是一個類,主要用于泛型和某些特定場景下表示沒有返回值的情況。它是一個不可實例化的類,只有一個靜態(tài)字段 NULL。

void

  • 定義void 是 Java 中的一個關鍵字。
  • 用途:用于方法聲明,表示該方法不返回任何值。
  • 通俗理解void 就像一個“空盒子”,表示這個方法執(zhí)行完之后不會給你任何東西。它只是做一些事情,比如打印信息、修改數(shù)據(jù)等,但不會返回任何結果。

Void

  • 定義Voidjava.lang 包中的一個類。
  • 用途:主要用于泛型中,因為泛型不能直接使用基本類型或 void 關鍵字。
  • 通俗理解Void 是一個特殊的“盒子”,雖然它里面什么也沒有(不可實例化),但它可以用來表示“沒有具體的返回值”。在某些情況下,特別是在使用泛型時,我們需要一個占位符來表示沒有返回值的情況,這時就可以使用 Void。

通俗對比

  • void:方法執(zhí)行完后沒有任何返回值,就像你做了一件事但沒有得到任何回報。
  • Void:方法可能有返回值,但返回的是一個特殊的對象,表示“沒有具體的業(yè)務數(shù)據(jù)”,但它仍然可以包含一些狀態(tài)信息(如成功或失敗的狀態(tài)碼和消息)。

附:Java 方法中加void和不加void的區(qū)別

只要記住void即無返回值就OK了,如果不用void,那么這個地方一定是被一個其它的數(shù)據(jù)類型所替代,比如下面用的是String,當然也可能是int或者Boolean等等,那么此時我們下面就要有一個return返回值。

package com.Thursday.one;
 
public class Variable {
 
	
	public static void speaker(){
		System.out.println("你好");
	}
	public static String Talk(){
		return "hello";
	}
	public static void main(String[] args) {
		speaker();
		Talk();
		String aString = Talk();
		System.out.println(aString);
	}
}

到此這篇關于Java中void和Void的區(qū)別和特性的文章就介紹到這了,更多相關Java void和Void區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • mybatis實現(xiàn)一對一關聯(lián)映射實例代碼

    mybatis實現(xiàn)一對一關聯(lián)映射實例代碼

    這篇文章主要給大家介紹了關于mybatis實現(xiàn)一對一關聯(lián)映射的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-11-11
  • MyBatisPlus標準數(shù)據(jù)層CRUD的使用詳解

    MyBatisPlus標準數(shù)據(jù)層CRUD的使用詳解

    這篇文章主要介紹了MyBatisPlus標準數(shù)據(jù)層CRUD的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • Java零基礎入門數(shù)組

    Java零基礎入門數(shù)組

    數(shù)組對于每一門編程語言來說都是重要的數(shù)據(jù)結構之一,當然不同語言對數(shù)組的實現(xiàn)及處理也不盡相同。Java?語言中提供的數(shù)組是用來存儲固定大小的同類型元素
    2022-04-04
  • java時間格式的簡單整理

    java時間格式的簡單整理

    這篇文章主要介紹了java時間格式的簡單整理,文中通過示例介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考一下
    2019-06-06
  • SpringBoot集成redisson全過程

    SpringBoot集成redisson全過程

    本文主要介紹了如何集成Redisson,包括環(huán)境配置、引入Redisson的依賴、添加Redisson的配置類以及Redisson的常見使用方法,在類中注入Redisson后,可以獲取鎖對象和使用,這些都是作者的個人經(jīng)驗,供讀者參考
    2024-10-10
  • SpringBoot自動裝配原理及過程解讀

    SpringBoot自動裝配原理及過程解讀

    文章解析SpringBoot自動裝配機制,結合SPI源碼分析與手寫Starter實踐,闡述如何通過ServiceLoader和SpringFactoriesLoader實現(xiàn)服務發(fā)現(xiàn)及動態(tài)配置加載,并利用條件注解@Conditional進行智能過濾,最終指導開發(fā)者自定義Starter并配置屬性提示
    2025-09-09
  • Java?AQS中ReentrantLock條件鎖的使用

    Java?AQS中ReentrantLock條件鎖的使用

    ReentrantLock繼承了Lock接口,?lock方法實際上是調用了Sync的子類NonfairSync(非公平鎖)的lock方法。ReentrantLock的真正實現(xiàn)在他的兩個內(nèi)部類NonfairSync和FairSync中,默認實現(xiàn)是非公平鎖
    2023-02-02
  • Springboot如何讀取resources下的json配置文件

    Springboot如何讀取resources下的json配置文件

    這篇文章主要介紹了Springboot如何讀取resources下的json配置文件問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Java Spring AOP詳解

    Java Spring AOP詳解

    這篇文章主要介紹了Java的Spring框架中的AOP實現(xiàn)實例,AOP面向切面編程其實也可以被看作是一個設計模式去規(guī)范項目的結構,需要的朋友可以參考下
    2021-09-09
  • 這一次搞懂SpringMVC原理說明

    這一次搞懂SpringMVC原理說明

    這篇文章主要介紹了這一次搞懂SpringMVC原理說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08

最新評論

丰顺县| 南漳县| 贵州省| 镇雄县| 邢台市| 庆安县| 福安市| 金阳县| 清河县| 襄垣县| 永年县| 祁门县| 穆棱市| 台南县| 平果县| 都昌县| 牙克石市| 桐城市| 海兴县| 循化| 林芝县| 文昌市| 合肥市| 南投市| 湖北省| 华容县| 彰武县| 彭山县| 灵宝市| 怀宁县| 洛扎县| 上高县| 同仁县| 惠安县| 工布江达县| 宁德市| 琼中| 洛扎县| 安达市| 临高县| 鄂托克旗|