静态导入

静态导入的作用: 简化书写。

2 作用范围:静态导入可以作用一个类的所有静态成员。 

静态导入的格式:

  import static 包名.类名.静态的成员

示例:

1 public static void main(String[] args) {
2         ArrayList<Integer> list = new ArrayList<>();
3         list.add(3);
4         list.add(44);
5         list.add(5);
6         list.add(11);
7         list.add(23);
8         
9     }

现在,将它进行排序并求出其中最大值。用到Collections.sort方法和Collections.max方法

 1 public static void main(String[] args) {
 2         ArrayList<Integer> list = new ArrayList<>();
 3         list.add(3);
 4         list.add(44);
 5         list.add(5);
 6         list.add(11);
 7         list.add(23);
 8         
 9         //排序
10         Collections.sort(list);
11         System.out.println("最大值: " + Collections.max(list));
12         
13         System.out.println("元素为:" + list);
14     }

结果为:

最大值: 44
元素为:[3, 5, 11, 23, 44]

那么,现在改为静态导入

(1) 先导入这条语句

import static java.util.Collections.*;

(2)将原代码中

  Collections.sort()Collections.max()

改为

  sort()和max()

 1 import static java.util.Collections.*;
 2 
 3 public class Demo1 {
 4     public static void main(String[] args) {
 5         ArrayList<Integer> list = new ArrayList<>();
 6         list.add(3);
 7         list.add(44);
 8         list.add(5);
 9         list.add(11);
10         list.add(23);
11         
12         //排序
13         sort(list);
14         System.out.println("最大值: " + max(list));
15         
16         System.out.println("元素为:" + list);
17     }
18 }

结果一样是正确的:

最大值: 44
元素为:[3, 5, 11, 23, 44]

同样的,查API文档可知:

所以,我们也可以这样:

 1 import static java.util.Collections.*;
 2 import static java.lang.System.out;
 3 
 4 public class Demo1 {
 5     public static void main(String[] args) {
 6         ArrayList<Integer> list = new ArrayList<>();
 7         list.add(3);
 8         list.add(44);
 9         list.add(5);
10         list.add(11);
11         list.add(23);
12         
13         //排序
14         sort(list);
15         out.println("最大值: " + max(list));
16         
17         out.println("元素为:" + list);
18     }
19 }

但是,这里有一个问题:

  如果,我自定义一个sort方法,那么会怎么样?

 1 import static java.util.Collections.*;
 2 import static java.lang.System.out;
 3 
 4 public class Demo1 {
 5     public static void main(String[] args) {
 6         ArrayList<Integer> list = new ArrayList<>();
 7         list.add(3);
 8         list.add(44);
 9         list.add(5);
10         list.add(11);
11         list.add(23);
12         
13         //排序
14         sort(list);
15         out.println("最大值: " + max(list));
16         
17         out.println("元素为:" + list);
18     
19     }
20     
21     public static void sort(ArrayList<Integer> list){
22         System.out.println("自定义类的  sort 方法");
23     }
24 }

输出结果:

自定义类的  sort 方法
最大值: 44
元素为:[3, 44, 5, 11, 23]

现在,main方法中调用的是自定义sort方法,而不是Collections.sort方法

4 静态导入要注意的事项:
  如果静态导入的成员与本类的成员存在同名的情况下,那么默认使用本类的静态成员,如果需要指定使用静态导入的成员,那么需要在静态成员前面加上类名

此时,我再将  sort(list);  写成  Collections.sort(list);  

看下结果:

最大值: 44
元素为:[3, 5, 11, 23, 44]

注意:静态导入时JDK1.5那时才存在的!

原文地址:https://www.cnblogs.com/shadowdoor/p/6851873.html