import 关键字

概述

import 关键字用于导入其他包中的类、接口或静态成员,使代码能够使用外部的类型。

语法格式

import packageName.ClassName;           // 导入特定类
import packageName.*;                   // 导入包中所有类
import static packageName.ClassName.*;  // 静态导入

基本用法

// 导入标准库类
import java.util.List;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.io.FileInputStream;
import java.io.IOException;

// 导入自定义包中的类
import com.example.model.User;
import com.example.service.UserService;

public class ImportExample {
    public static void main(String[] args) {
        // 使用导入的类
        List<String> names = new ArrayList<>();
        names.add("张三");
        names.add("李四");

        Map<String, Integer> ages = new HashMap<>();
        ages.put("张三", 25);
        ages.put("李四", 30);

        User user = new User("王五", "wangwu@example.com");
        UserService service = new UserService();
        service.createUser(user.getUsername(), user.getEmail());
    }
}

通配符导入

// 导入java.util包中所有类
import java.util.*;

public class WildcardImportExample {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        Set<Integer> set = new HashSet<>();
        Map<String, Object> map = new HashMap<>();
        Date now = new Date();
        Scanner scanner = new Scanner(System.in);

        System.out.println("当前时间: " + now);
    }
}

静态导入

// 静态导入数学方法
import static java.lang.Math.*;
import static java.lang.System.out;

// 静态导入自定义常量
import static com.example.Constants.*;

public class StaticImportExample {
    public static void main(String[] args) {
        // 直接使用静态方法,无需类名前缀
        double result = sqrt(16);
        double power = pow(2, 3);
        double sine = sin(PI / 2);

        // 直接使用out,无需System.out
        out.println("平方根: " + result);
        out.println("幂运算: " + power);
        out.println("正弦值: " + sine);

        // 使用静态导入的常量
        out.println("最大值: " + MAX_VALUE);
        out.println("应用名: " + APP_NAME);
    }
}

// 常量类
class Constants {
    public static final int MAX_VALUE = 100;
    public static final String APP_NAME = "我的应用";
}

导入冲突处理

// 当有类名冲突时,使用完全限定名
import java.util.Date;
// import java.sql.Date; // 冲突,不能同时导入

public class ImportConflictExample {
    public static void main(String[] args) {
        // 使用导入的Date类
        Date utilDate = new Date();

        // 使用完全限定名访问其他Date类
        java.sql.Date sqlDate = new java.sql.Date(System.currentTimeMillis());

        System.out.println("Util Date: " + utilDate);
        System.out.println("SQL Date: " + sqlDate);
    }
}

条件导入和别名

// Java不直接支持别名,但可以通过其他方式实现
import java.util.concurrent.ConcurrentHashMap;

public class ImportAliasExample {
    public static void main(String[] args) {
        // 使用类型别名(通过变量声明)
        Class<ConcurrentHashMap> ConcurrentMap = ConcurrentHashMap.class;

        // 或者通过继承/实现创建别名
        Map<String, Integer> map = new ConcurrentHashMap<>();
    }
}

// 通过继承创建别名
class StringMap extends HashMap<String, String> {
    // 现在StringMap就是HashMap<String, String>的别名
}

最佳实践

// 好的导入实践
import java.util.List;
import java.util.ArrayList;
import java.util.Collections;

// 避免不必要的通配符导入
// import java.util.*; // 除非真的需要很多类

public class ImportBestPractices {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("item1");
        list.add("item2");

        Collections.sort(list);
        System.out.println(list);
    }
}

import关键字是Java模块化编程的重要工具,正确使用可以让代码更清晰、更易维护。

powered by Gitbook© 2025 编外计划 | 最后修改: 2025-07-28 16:25:54

results matching ""

    No results matching ""