java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java import static

Java中import static使用方式小结

作者:青衫客36

import static是Java中用于导入静态成员的特性,可以直接导入静态方法、常量、内部类和枚举成员,本文就来介绍一下Java中import static使用,感兴趣的可以了解一下

import static基本介绍

import static 的作用是把某个类中的 静态方法 直接引入当前类的作用域,从而在调用时可以省略类名前缀。当然,import static 在 Java 中不仅可以导入 静态方法,还可以导入 静态变量 / 静态常量 / 静态内部类 / 静态枚举成员

✅ 能导入的内容

静态方法

import static java.util.Objects.requireNonNull;

String s = requireNonNull("abc");

静态常量 / 变量

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

double area = PI * r * r;

静态内部类

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!");
}

❌ 不能导入的内容

总之,import static 可以导入 类中所有的静态成员(方法、常量、内部类、枚举值),但不能导入需要对象实例才能访问的成员(实例方法、实例变量)。

测试案例

下面通过一个小 Demo,把 静态方法 / 静态常量 / 静态内部类 / 枚举常量import static 用法都使用一遍。

package per.mjn.demo;

import static java.lang.Math.*;               // 导入静态常量 & 方法
import static java.util.Map.Entry;            // 导入静态内部类
import static java.time.DayOfWeek.*;          // 导入枚举常量
import static java.util.Objects.requireNonNull; // 导入静态方法

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

public class StaticImportDemo {
    public static void main(String[] args) {
        // 1. 使用静态常量 (Math.PI, Math.E)
        double r = 2.0;
        double area = PI * pow(r, 2); // 直接用 PI 和 pow()
        System.out.println("圆面积: " + area);
        System.out.println("自然常数 e: " + E);

        // 2. 使用静态方法 (Objects.requireNonNull)
        String s = requireNonNull("Hello");
        System.out.println("字符串: " + s);

        // 3. 使用静态内部类 (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
自然常数 e: 2.718281828459045
字符串: Hello
Bob -> 88
Alice -> 95
今天是: MONDAY

这样我们就能看到 import static 的四种典型用法:

static import最佳实践

✅ 推荐使用的场景

工具类中的语义明确方法 / 常量

方法名/常量名独特,不容易和其他类冲突。

例子:

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

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

常量集合 / 枚举常量

写法更简洁,尤其是枚举。

例子:

import static java.time.DayOfWeek.*;

DayOfWeek today = MONDAY;

单元测试断言 / Mock 框架

测试代码可读性提升明显。

例子:

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

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

DSL 风格 API

让代码更“自然语言化”,常见于流式 API / 匹配器。

例子:

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

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

❌ 不推荐使用的场景

  1. 方法名太通用: 比如 get()set()build(),看不出来源,建议保留类前缀:BuilderUtils.build()
  2. 多个类里有相同名字的方法/常量:例如 StringUtils.isEmpty()CollectionUtils.isEmpty(),同时 static import 会冲突,建议只保留类名前缀。
  3. 通配符导入过多import static xxx.*; 在业务代码中容易引入过多方法,影响可读性和维护。测试代码里可以接受,但业务代码里建议只导入需要的成员。

📝 建议

总之,能让代码更清晰就用,可能让人困惑就不用。

到此这篇关于Java中import static使用方式小结的文章就介绍到这了,更多相关Java import static 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文