• 第八章《Java高级语法》第9节:静态导入技术


    Java语言中调用静态方法时要在方法的前面加上类的名称,如下所示。

    1. Math.abs(-10);
    2. Math.abs(2.5);

    这段代码中,两次调用了Math类求绝对值的静态方法abs(),如果在程序中多次使用Math类的abs()方法,就必须在程序中反复的写上Math类的名称,这样就造成了大量重复性工作。为了解决这个问题,Java语言引入了一种静态导入技术。传统的导入是导入某个包下的一个类或所有类,而静态导入技术则可以导入一个类的静态属性或方法。静态导入仍然要用import关键字来完成,但为了区别于对普通类和接口的导入,还需在import关键字的后面再加上一个static关键字。下面的【例08_24】展示了如何实现对静态方法的导入。

    【例08_24 导入静态方法】

    Exam08_24.java

    1. import static java.lang.Math.abs;//导入Math类的abs()方法
    2. public class Exam08_24 {
    3.     public static void main(String[] args) {
    4.         int a = abs(-10);//①
    5.         double b = abs(2.5);//②
    6.         System.out.println("-10的绝对值是:"+a);
    7.         System.out.println("2.5的绝对值是:"+b);
    8.     }
    9. }

    在【例08_24】中,使用静态导入技术导入了Math类的静态方法,这样在调用它的abs()静态方法时就不需要写上类的名称。各位读者请注意:语句①和语句②分别调用了参数为int和参数为double两个版本的abs()方法,但在进行静态导入时只指定了静态方法的名称,并没有指定具体导入哪一个版本,但程序仍然能够正确运行,这说明只要静态导入时只要指定了方法的名称,这个方法所有的版本都可以在程序中直接使用。

    与普通导入一样,静态导入也可以使用*这个符号来代表导入某个类的所有静态方法和静态属性,下面的【例08_25】展示了使用*号导入一个类的所有静态属性和静态方法。

    【例08_25 导入静态方法和静态属性】

    Exam08_25.java

    1. import static java.lang.Math.*;
    2. import static java.lang.System.*;
    3. public class Exam08_25 {
    4.     public static void main(String[] args) {
    5.         int a = abs(-10);
    6.         double b = abs(2.5);
    7.         out.println("-10的绝对值是:"+a);
    8.         out.println("2.5的绝对值是:"+b);
    9.         out.println("圆周率PI的值是:"+PI);
    10.     }
    11. }

    【例08_25】中导入了Math类和System类的所有静态方法和静态属性。因此在程序中能够直接调用Math类的abs()方法以及静态属性PI。此外,out对象其实也是System类的一个静态属性,对out属性进行了静态导入使得在控制台上输出信息的语句也更加简化了。

    静态导入这个知识点非常简单,但各位读者在进行静态导入时需要注意:不能出现导入冲突的情况。例如:假设某个A类也有一个静态的abs()方法,如果同时把Math类的abs()方法和A类的abs()方法都导入到程序中,那么在程序中不加类名直接调用abs()方法时,编译器就无法区分到底调用的是哪一个方法,这种情况下仍然要在方法前面加上类的名称以示区别。

    除阅读文章外,各位小伙伴还可以点击这里观看我在本站的视频课程学习Java!

  • 相关阅读:
    vue响应式原理中的发布订阅模式的应用
    如何有效进行回顾会议(上)?
    [接口自动化] 禅道登录 Python+requests[纯代码]
    vue预览下载PDF文件
    第七章 查找 八、B树
    捷诚管理信息系统 SQL注入漏洞复现
    Linux下的环境变量
    Wireshark过滤器语法
    Postgresql中ParamListInfoData的作用
    安科瑞APD高压开关柜局部放电监测装置的设计与应用
  • 原文地址:https://blog.csdn.net/shalimu/article/details/128056430