参考回答: 在 Java 中,如果要在一个类中使用另外一个包中的某个类,大多数情况下就要涉及到导包的使用了。
JDK 1.5 之前只能使用 import 来导入不同包的类,语法是:
// 导入指定包的指定类
import 包名.类名;
// 导入指定包的所有类
import 包名.*;
复制代码
导入完之后就可以正常使用该类的 API 了。
package demo1;
// 导入Arrays类
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
int[] arr = { 5, 3, 4, 7, 6, 2, 1 };
// 使用Arrays类的静态方法
Arrays.sort(arr);
System.out.println("数组最大值为:" + arr[arr.length - 1]);
}
}
复制代码
而在 JDK 1.5 开始,Java 新增了一个静态导入的特性,语法是:
// 导入指定类的指定静态信息(静态变量、静态常量、静态方法)
import static 包名.类名.静态信息;
// 导入指定类的所有静态信息
import static 包名.类名.*;
复制代码
顾名思义,静态导入只能导入某个类中的静态信息,包括静态变量、静态常量、静态方法。 这样导入完之后就可以直接使用这个类的静态信息了,而不用再通过 类名.静态信息 的方式来使用了。
package demo2;
// 导入Arrays类的所有静态信息
import static java.util.Arrays.*;
public class Test {
public static void main(String[] args) {
int[] arr = { 5, 3, 4, 7, 6, 2, 1 };
// 使用Arrays类的静态方法
sort(arr);
System.out.println("数组最大值为:" + arr[arr.length - 1]);
}
}
复制代码
但是使用静态导入的时候也有一些注意事项:
1.使用静态导入,会牺牲程序的阅读性,不容易区分某个信息是属于当前类的还是属于静态导入的。
2.使用静态导入的时候,如果引入了和当前类的信息冲突的内容,或者静态导入了多个类有相同的静态信息。总之,是会导致编译器模糊不清的情况 ,这时候就还是需要用 类名.静态信息 的方式来加以区分。
package demo3;
import static java.util.Arrays.*;
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
int[] arr = { 5, 3, 4, 7, 6, 2, 1 };
// 不能使用静态导入的toString,因为与当前类从Object类继承的toString冲突
// String arrStr = toString(arr);
String arrStr = Arrays.toString(arr);
System.out.println(arrStr);
}
}
复制代码
package demo4;
import static java.lang.Integer.MAX_VALUE;
import static java.lang.Long.MAX_VALUE;
public class Test {
public static void main(String[] args) {
// 不能直接使用MAX_VALUE,因为Long和Integer类都有该静态常量
// System.out.println(MAX_VALUE);
System.out.println(Integer.MAX_VALUE);
}
}
复制代码
当然了,如果要大量使用某个类的静态信息,使用静态导入不失为一种更简洁的方式。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END