欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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)部類和枚舉成員,本文就來介紹一下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í)例,不能通過 ClassName.method() 直接調(diào)用)。
  • 構(gòu)造方法(構(gòu)造函數(shù)本來就不能被繼承或靜態(tài)調(diào)用)。

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

測(cè)試案例

下面通過一個(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)景

工具類中的語義明確方法 / 常量

方法名/常量名獨(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

讓代碼更“自然語言化”,常見于流式 API / 匹配器。

例子:

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

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

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

  1. 方法名太通用: 比如 get()、set()build(),看不出來源,建議保留類前綴:BuilderUtils.build()。
  2. 多個(gè)類里有相同名字的方法/常量:例如 StringUtils.isEmpty()CollectionUtils.isEmpty(),同時(shí) static import 會(huì)沖突,建議只保留類名前綴。
  3. 通配符導(dǎo)入過多import static xxx.*; 在業(yè)務(wù)代碼中容易引入過多方法,影響可讀性和維護(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)文章

最新評(píng)論