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模块化编程的重要工具,正确使用可以让代码更清晰、更易维护。