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

Java中import static使用方式小結(jié)

 更新時(shí)間:2025年08月29日 09:22:07   作者:青衫客36  
import static是Java中用于導(dǎo)入靜態(tài)成員的特性,可以直接導(dǎo)入靜態(tài)方法、常量、內(nèi)部類和枚舉成員,本文就來(lái)介紹一下Java中import static使用,感興趣的可以了解一下

import static基本介紹

import static 的作用是把某個(gè)類中的 靜態(tài)方法 直接引入當(dāng)前類的作用域,從而在調(diào)用時(shí)可以省略類名前綴。當(dāng)然,import static 在 Java 中不僅可以導(dǎo)入 靜態(tài)方法,還可以導(dǎo)入 靜態(tài)變量 / 靜態(tài)常量 / 靜態(tài)內(nèi)部類 / 靜態(tài)枚舉成員

? 能導(dǎo)入的內(nèi)容

靜態(tài)方法

import static java.util.Objects.requireNonNull;

String s = requireNonNull("abc");

靜態(tài)常量 / 變量

import static java.lang.Math.PI;
import static java.lang.Math.E;

double area = PI * r * r;

靜態(tài)內(nèi)部類

import static java.util.Map.Entry;

for (Entry<String, String> e : map.entrySet()) {
    System.out.println(e.getKey());
}

枚舉常量

import static java.time.DayOfWeek.*;

DayOfWeek today = MONDAY;
if (today == FRIDAY) {
    System.out.println("Weekend is coming!");
}

? 不能導(dǎo)入的內(nèi)容

  • 實(shí)例方法 / 實(shí)例變量(因?yàn)樗鼈円蕾噷?duì)象實(shí)例,不能通過(guò) ClassName.method() 直接調(diào)用)。
  • 構(gòu)造方法(構(gòu)造函數(shù)本來(lái)就不能被繼承或靜態(tài)調(diào)用)。

總之,import static 可以導(dǎo)入 類中所有的靜態(tài)成員(方法、常量、內(nèi)部類、枚舉值),但不能導(dǎo)入需要對(duì)象實(shí)例才能訪問(wèn)的成員(實(shí)例方法、實(shí)例變量)。

測(cè)試案例

下面通過(guò)一個(gè)小 Demo,把 靜態(tài)方法 / 靜態(tài)常量 / 靜態(tài)內(nèi)部類 / 枚舉常量import static 用法都使用一遍。

package per.mjn.demo;

import static java.lang.Math.*;               // 導(dǎo)入靜態(tài)常量 & 方法
import static java.util.Map.Entry;            // 導(dǎo)入靜態(tài)內(nèi)部類
import static java.time.DayOfWeek.*;          // 導(dǎo)入枚舉常量
import static java.util.Objects.requireNonNull; // 導(dǎo)入靜態(tài)方法

import java.time.DayOfWeek;
import java.util.HashMap;
import java.util.Map;

public class StaticImportDemo {
    public static void main(String[] args) {
        // 1. 使用靜態(tài)常量 (Math.PI, Math.E)
        double r = 2.0;
        double area = PI * pow(r, 2); // 直接用 PI 和 pow()
        System.out.println("圓面積: " + area);
        System.out.println("自然常數(shù) e: " + E);

        // 2. 使用靜態(tài)方法 (Objects.requireNonNull)
        String s = requireNonNull("Hello");
        System.out.println("字符串: " + s);

        // 3. 使用靜態(tài)內(nèi)部類 (Map.Entry)
        Map<String, Integer> scores = new HashMap<>();
        scores.put("Alice", 95);
        scores.put("Bob", 88);
        for (Entry<String, Integer> e : scores.entrySet()) {
            System.out.println(e.getKey() + " -> " + e.getValue());
        }

        // 4. 使用枚舉常量 (DayOfWeek.MONDAY, FRIDAY)
        DayOfWeek today = MONDAY; // 直接用 MONDAY 而不是 DayOfWeek.MONDAY
        if (today == FRIDAY) {
            System.out.println("周五啦,周末快到了!");
        } else {
            System.out.println("今天是: " + today);
        }
    }
}

輸出示例

圓面積: 12.566370614359172
自然常數(shù) e: 2.718281828459045
字符串: Hello
Bob -> 88
Alice -> 95
今天是: MONDAY

這樣我們就能看到 import static 的四種典型用法:

  • Math.PI / Math.pow(靜態(tài)常量 & 方法)
  • Objects.requireNonNull(靜態(tài)方法)
  • Map.Entry(靜態(tài)內(nèi)部類)
  • DayOfWeek.MONDAY(枚舉常量)

static import最佳實(shí)踐

? 推薦使用的場(chǎng)景

工具類中的語(yǔ)義明確方法 / 常量

方法名/常量名獨(dú)特,不容易和其他類沖突。

例子:

import static java.util.Objects.requireNonNull;
import static java.lang.Math.PI;

double area = PI * r * r;
String s = requireNonNull("hello");

常量集合 / 枚舉常量

寫法更簡(jiǎn)潔,尤其是枚舉。

例子:

import static java.time.DayOfWeek.*;

DayOfWeek today = MONDAY;

單元測(cè)試斷言 / Mock 框架

測(cè)試代碼可讀性提升明顯。

例子:

import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.*;

assertEquals(42, result);
verify(service, times(1)).doSomething();

DSL 風(fēng)格 API

讓代碼更“自然語(yǔ)言化”,常見(jiàn)于流式 API / 匹配器。

例子:

import static java.util.stream.Collectors.toList;

List<String> names = users.stream()
                          .map(User::getName)
                          .collect(toList());

? 不推薦使用的場(chǎng)景

  1. 方法名太通用: 比如 get()set()、build(),看不出來(lái)源,建議保留類前綴:BuilderUtils.build()。
  2. 多個(gè)類里有相同名字的方法/常量:例如 StringUtils.isEmpty()CollectionUtils.isEmpty(),同時(shí) static import 會(huì)沖突,建議只保留類名前綴。
  3. 通配符導(dǎo)入過(guò)多import static xxx.*; 在業(yè)務(wù)代碼中容易引入過(guò)多方法,影響可讀性和維護(hù)。測(cè)試代碼里可以接受,但業(yè)務(wù)代碼里建議只導(dǎo)入需要的成員。

?? 建議

  • 業(yè)務(wù)代碼:精確導(dǎo)入,控制范圍,保證可讀性。
  • 測(cè)試代碼:可以大膽用,尤其是斷言、Mock。
  • 團(tuán)隊(duì)規(guī)范:建議在 Code Style 文檔里約定:
    • 允許測(cè)試類使用 import static ...*
    • 業(yè)務(wù)代碼必須顯式導(dǎo)入具體方法或常量,不允許 *。

總之,能讓代碼更清晰就用,可能讓人困惑就不用。

到此這篇關(guān)于Java中import static使用方式小結(jié)的文章就介紹到這了,更多相關(guān)Java import static 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot統(tǒng)一返回結(jié)果問(wèn)題

    SpringBoot統(tǒng)一返回結(jié)果問(wèn)題

    這篇文章主要介紹了SpringBoot統(tǒng)一返回結(jié)果問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Spring?Security?基于URL的權(quán)限判斷源碼解析

    Spring?Security?基于URL的權(quán)限判斷源碼解析

    這篇文章主要介紹了Spring?Security?基于URL的權(quán)限判斷問(wèn)題,我們想要實(shí)現(xiàn)自己的基于請(qǐng)求Url的授權(quán)只需自定義一個(gè)?AccessDecisionManager即可,接下來(lái)跟隨小編一起看看實(shí)現(xiàn)代碼吧
    2021-12-12
  • 使用@Valid+BindingResult進(jìn)行controller參數(shù)校驗(yàn)方式

    使用@Valid+BindingResult進(jìn)行controller參數(shù)校驗(yàn)方式

    這篇文章主要介紹了使用@Valid+BindingResult進(jìn)行controller參數(shù)校驗(yàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 如何使用IntelliJ?IDEA進(jìn)行Java內(nèi)存分析詳解

    如何使用IntelliJ?IDEA進(jìn)行Java內(nèi)存分析詳解

    這篇文章主要介紹了如何使用IntelliJ?IDEA進(jìn)行Java內(nèi)存分析的相關(guān)資料,包括內(nèi)存消耗情況的查看、內(nèi)存泄漏的分析、垃圾回收情況的優(yōu)化等,通過(guò)IntelliJIDEA提供的工具,開(kāi)發(fā)者可以有效地提升應(yīng)用程序的性能和穩(wěn)定性,需要的朋友可以參考下
    2025-05-05
  • Spring IOC的相關(guān)注解運(yùn)用詳解

    Spring IOC的相關(guān)注解運(yùn)用詳解

    這篇文章主要介紹了Spring IOC的相關(guān)注解運(yùn)用詳解,純注解實(shí)現(xiàn)IOC需要一個(gè)Java類代替xml文件,這個(gè)Java類上方需要添加@Configuration,表示該類是一個(gè)配置類,作用是代替配置文件,需要的朋友可以參考下
    2023-08-08
  • RestTemplate報(bào)錯(cuò)400 Bad Request的解決方案

    RestTemplate報(bào)錯(cuò)400 Bad Request的解決方案

    在使用Spring Boot時(shí),若直接通過(guò)@Autowired注入RestTemplate可能會(huì)遇到400BadRequest錯(cuò)誤,原因在于Spring Boot官方文檔指出,由于RestTemplate實(shí)例通常需要在使用前進(jìn)行定制,因此Spring Boot不會(huì)自動(dòng)配置單個(gè)RestTemplate Bean
    2024-11-11
  • SpringBoot使用外置Tomcat的操作步驟

    SpringBoot使用外置Tomcat的操作步驟

    這篇文章主要介紹了Spring Boot如何使用外置Tomcat,包括創(chuàng)建Maven Web項(xiàng)目、修改為Spring Boot項(xiàng)目、配置外部Tomcat和啟動(dòng)外部Tomcat,需要的朋友可以參考下
    2026-02-02
  • dubbo整合springboot新手入門教程詳解

    dubbo整合springboot新手入門教程詳解

    這篇文章主要介紹了dubbo整合springboot新手入門詳解,當(dāng)一臺(tái)計(jì)算機(jī)的程序需要調(diào)用另一臺(tái)計(jì)算機(jī)代碼的時(shí)候,就涉及遠(yuǎn)程調(diào)用。此時(shí)dubbo就粉末登場(chǎng)了,需要的朋友可以參考下
    2019-07-07
  • JavaFx 中創(chuàng)建計(jì)時(shí)器的步驟詳解

    JavaFx 中創(chuàng)建計(jì)時(shí)器的步驟詳解

    本文介紹了如何在JavaFx中創(chuàng)建計(jì)時(shí)器,通過(guò)創(chuàng)建計(jì)時(shí)器界面、編寫計(jì)時(shí)器邏輯以及關(guān)聯(lián)計(jì)時(shí)器按鈕,我們可以快速實(shí)現(xiàn)一個(gè)靈活可靠的計(jì)時(shí)器組件,本文能夠幫助讀者在 JavaFx 中成功實(shí)現(xiàn)自己的計(jì)時(shí)器功能,感興趣的朋友一起看看吧
    2023-11-11
  • 通過(guò)Spring Boot配置動(dòng)態(tài)數(shù)據(jù)源訪問(wèn)多個(gè)數(shù)據(jù)庫(kù)的實(shí)現(xiàn)代碼

    通過(guò)Spring Boot配置動(dòng)態(tài)數(shù)據(jù)源訪問(wèn)多個(gè)數(shù)據(jù)庫(kù)的實(shí)現(xiàn)代碼

    這篇文章主要介紹了通過(guò)Spring Boot配置動(dòng)態(tài)數(shù)據(jù)源訪問(wèn)多個(gè)數(shù)據(jù)庫(kù)的實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2018-03-03

最新評(píng)論

逊克县| 临汾市| 交城县| 额敏县| 宁波市| 白银市| 潞西市| 南昌市| 寻乌县| 临颍县| 惠东县| 蒙山县| 遂溪县| 孝昌县| 浦北县| 德阳市| 葵青区| 当雄县| 阿荣旗| 苗栗市| 峨山| 岢岚县| 乌鲁木齐县| 黄浦区| 岱山县| 搜索| 紫云| 米脂县| 大化| 上思县| 萝北县| 盐池县| 吉木乃县| 桐乡市| 蒙城县| 陵水| 内江市| 兴义市| 赫章县| 丰顺县| 龙游县|