zoukankan      html  css  js  c++  java
  • java5的静态导入import static

     在Java 5中,import语句得到了增强,以便提供甚至更加强大的减少击键次数功能,虽然一些人争议说这是以可读性为代价的。这种新的特性成为静态导入。

    1、静态导入的与普通import的区别:

        import语句可以导入一个类,或者包中的类;

        import static 语句可以导入一个类的中的某个静态成员,也可以导入所有的静态成员。

      2、优劣分析:

        优点:可以少写类名,使某些代码变简洁

        缺点:成员归属不明确,使可读性不强,易产生混淆

      3、用法示例:

    [html] view plaincopy
    1. package cn.itheima.blog1;  
    2. //import static java.lang.Math.*;//导入所有成员  
    3. import static java.lang.Math.PI;//静态导入成员变量  
    4. import static java.lang.Math.max;//静态导入成员函数  
    5.   
    6. public class StaticImportDemo {  
    7.     /**  
    8.      * 静态导入示例(Math类)  
    9.      * 1、导入所有成员  
    10.      * 2、导入某个成员函数  
    11.      * 3、导入某个成员变量  
    12.      */  
    13.       
    14.     public static void main(String[] args) {  
    15.         System.out.println("PI的值是" + PI);  
    16.         System.out.println("1,2之间较大的数为:" + max(1,2));  
    17.           
    18.     }  

    当你想使用static成员时,可以使用静态导入(在API中的类和你自己的类上,都可以使用该特性)。下面是静态导入前后的代码实例:

    在静态导入之前:
    
    public class TestStatic { 
        public static void main(String[] args) { 
            System.out.println(Integer.MAX_VALUE); 
            System.out.println(Integer.toHexString(42)); 
        } 
    } 
    
    
    在静态导入之后:
    
    import static java.lang.System.out; 
    import static java.lang.Integer.*; 
     
    public class TestStaticImport { 
        public static void main(String[] args) { 
            out.println(MAX_VALUE); 
            out.println(toHexString(42)); 
        } 
    }


    两个类都产生相同的输出:
    2147483647 
    2a
    让我们看一下使用静态导入特性的代码中将发生什么:
    1、虽然该特性通常称为“静态导入”,但语法必须是import static,后面跟你想导入的static成员的完全限定名称,或者通配符。在本例中,我们在System类的out对象上进行静态导入。


    2、在本例中,我们可能想使用java.lang.Integer类的几个static成员。该静态导入语句使用通配符来表达“我想在此类中的所有静态成员上进行静态导入”。


    3、现在我们终于看到静态导入特性的好处!我们不必在System.out.println中键入System。太好了!另外,我们不必在Integer.MAX_VALUE中键入Integer。因此,在这行代码中,我们能够将快捷方式用于静态方法和一个常量。


    4、最后,我们进行更多的快捷操作,这次针对Integer类的方法。


    关于该特性,我们已经有点儿讽刺意味儿了,但不仅我们是这样的。我们不认为节省少量的击键次数会让代码难于阅读一点,但许多开发人员要求将它添加到语言中。


    下面是使用静态导入的几条原则:


    你必须说import static, 不能说static import。
    提防含糊不清的命名static成员。例如,如果你对Integer类和Long类执行了静态导入,引用MAX_VALUE将导致一个编译器错误,因为Integer和Long都有一个MAX_VALUE常量,并且Java不会知道你在引用哪个MAX_VALUE。
    你可以在static对象引用、常量(记住,它们是static 或final)和static方法上进行静态导入。
  • 相关阅读:
    .NET Core下的Socket示例.
    VS没办法调试,直接退出,报错:1. 使用调试生成配置或禁用调试选项“启用‘仅我的代码’”。。。
    2017年2月7日 今年第一天上班了
    .NET Core错误:The specified framework 'Microsoft.NETCore.App', version '1.0.0-rc2-3002702' was not found.
    KB2533623 下载
    Ajax Not Found,asp.net mvc 中
    JavaScript外部函数调用AngularJS的函数、$scope
    029医疗项目-模块三:药品供应商目录模块——供货商药品目录查询功能----------数据模型的分析(建表)
    028医疗项目-模块三:药品供应商目录模块——供货商药品目录查询功能----------需求分析
    50个查询系列-第10个查询:查询没有学全所有课的同学的学号、姓名;
  • 原文地址:https://www.cnblogs.com/yangkai-cn/p/4016650.html
Copyright © 2011-2022 走看看