1.JAVA中的静态导入

1.使用方法 
  package tips;
  
  public interface Constants {
  
    public static final int PORT_NUMBER = 90;
  
    public static final String APP_NAME = "DOOLY";
  
    public static class StaticNestedClass {}//子类
  
  }
  
  通过使用 import static,就可以不用指定 Constants 类名而直接使用静态成员,包括静态方法。 例如:
  
  import static tips.Constants.*;
  
  public class StaticImportTip {
  
    public static void main(String []args) {
  
      System.out.println(PORT_NUMBER);
  
      System.out.println(APP_NAME);
  
      System.out.println(StaticNestedClass.class);
  
    }
  
  }

2.注意事项   
  假如你决定使用静态导入特性,推荐单独地导入常量名,而不要使用通配符。因为这样做可以让人知道常量的来源。 
  
  比如说在下面的代码片断中,一个开发人员查看了代码之后不知道DEFAULT_URL 和PORT_NUMBER从哪个类中导入的。
  
  import static tips.Constants.*;//注意是完全路径 
  
  import static tips.gen.App.*;
  
  public class StaticImportTip {
  
    public static void main(String []args) {
  
      System.out.println(PORT_NUMBER);
  
      System.out.println(DEFAULT_URL);
  
    }
  
  }
  
  假如导入语句如下:
  
  import static tips.Constants.PORT_NUMBER;
  
  import static tips.gen.App.DEFAULT_URL;
  
  那么常量的来源就很明显了。

另外,

●          针对一个给定的包,不可能用一行语句静态地导入所有类的所有类方法和类变量。也就是说,您不能这样编写代码:

import static java.lang.*;  // this does not compile!

●          如果一个本地方法,和一个静态导入的方法有着相同的名字,那么本地方法被调用。

谨慎地使用静态导入。因为静态导入使得类方法和类变量的定义位置变得模糊,所以加大了理解代码的难度。使用静态导入的原则是:限制静态导入的使用,不要在应用程序中普遍使用静态导入。

3.为什么要用静态导入,后果会怎样,好处又是什么?

静态导入使您不 用提供类名,这样做可以偷点儿懒,但也引入了不必要的混淆。正如 createDate 在何处定义这个问题。如果您正在编写的某个类,需要调用多个外部类方法(可能几十个甚至更多),这样您或许有了使用静态导入的借口。但是,更好的方法是,弄明白为什么需要这么多的静态调用,或许您需要重新审视类的设计。

使用静态导入的可能理由之一是:简化对多个类常量的调用,而且这些类常量定义在一个地方。假设您创建了多个报表类,而且每个报表类都需要将换行符追加到输出,所以每个报表类都需要用到常 量 NEWLINE , 就像RosterReporter 中的定义:

static final String NEWLINE = System.getProperty("line.separator");

您不会希望在每个报表类中都重复定义这个常量。所以您可以创建一个新类,这个类的职责就是为了持有常量。稍后,它也可以持有别的常量,例如对任何报表类都适用的页面宽度。

02.java的静态导入相关推荐

  1. Java中静态导入(传智播客毕老师视频讲解)

    StaticImport  静态导入. 当类名重名时,需要指定具体的包名. 当方法重名是,指定具备所属的对象或者类. import java.util.*; import static java.ut ...

  2. Java的String.format可以静态导入

    JDK-8203630 ["为String :: format添加等效的实例方法"]假定"将String :: format实现为静态的参数似乎是可以静态导入 forma ...

  3. java静态导入_Java中越来越多地接受静态导入吗?

    java静态导入 曾经有一段时间,至少在礼貌的社会中,人们普遍认为使用" 不是 "一词是不可接受的. 确实,在那个时候(也许直到今天),很多人确实(也确实)不认为这不是一个真实的词 ...

  4. Java是否越来越接受静态导入?

    曾经有一段时间,至少在礼貌的社会中,人们普遍认为使用" 不是 "一词是不可接受的. 确实,那时(也许直到今天),许多人确实(也确实)认为不是一个真实的词. 尽管这个词并没有 引起争 ...

  5. Java中有些好的特性(一):静态导入

    首先,请原谅我用了一个很土,很有争议的标题.小弟才思枯竭,实在想不出来什么文雅的了,抱歉~~ 前言 换了东家后,从一个死忠C# Fans摇身一变,客串了一把Java程序员,可能是受老赵的<Why ...

  6. Java学习第七课...枚举.自动装箱.静态导入...-asp.net关注

    枚举使用enum这个关键字: enum Transport {CAR,TRUCK,AIRPLANE,TRAIN,BOAT} 虽然是对象,但是不能使用new... 声明一个枚举类型的变量: Transp ...

  7. (10)Java泛型-Map集合-集合框架工具类-可变参数-静态导入

    -- 部分1.5新特性Java泛型-Map集合-集合框架工具类 泛型 概述: JDK1.5版本以后出现的新特性,用于解决安全问题,是一个类型安全机制. 对于泛型可以这样理解: 没有使用泛型时,只要是对 ...

  8. java 16 -12 静态导入

    静态导入: 格式:import static 包名-.类名.方法名; 可以直接导入到方法的级别 静态导入的注意事项: A:方法必须是静态的 B:如果有多个同名的静态方法,容易不知道使用谁?这个时候要使 ...

  9. Java中的包,类的导入,静态导入

    包的作用 1. 为了更好的组织代码,能够将自己的代码与代码库的代码分离. 2. 在需要合作完成的工作中,可以使用分包的方式来尽量的减少类命名的冲突. Sun公司推荐程序员使用公司域名的反向字符作为公司 ...

最新文章

  1. eclipse 安装svn插件
  2. asprise java_使用asprise进行图片验证码识别
  3. mysql命令实践_MySQL:常用命令行
  4. 面试必问------索引详解
  5. android使用cpu软解,Android 使用自带的MediaCodec 框架进行本地视频压缩,速度嗖嗖的,亲测有效!!!...
  6. C语言笔记 · ASCII码表
  7. 更改文件扩展名HTML,文件的后缀名怎么改|更改文件后缀名的方法
  8. 如何安装火狐浏览器插件
  9. QT的按钮设置图标及设置透明
  10. BFM模型和Landmarks可视化
  11. 微信个性化菜单 java_微信公众平台开发(109) 个性化菜单
  12. 数控技能大赛计算机程序员,全国数控技能大赛计算机程序设计员-广东职业技能鉴定指导.DOC...
  13. 水溶Cy7/Cy3/Cy5-SE染料,水溶性CY7活化酯,CAS号:477908-53-5
  14. 史上最全最新微信小程序自动化教程
  15. Spring控制Bean加载顺序
  16. GlobalCash全球付万事达虚拟信用卡-可用于国外支付购物
  17. c语言调易语言dll,易语言DLL来返回文本供其他语言调用
  18. 如何使用Mac的媒体键在DisplayPort,HDMI或Thunderbolt监视器上调整扬声器音量
  19. 2022年数维杯国际赛C题 如何利用大脑结构诊断阿尔茨海默氏病
  20. MNS、IOU、bounding box regression详解

热门文章

  1. 基于Python的汽车销售系统的设计和实现
  2. Power BI数据建模分析
  3. 使用CASIO fx-82ES的同学看过来!关于计算器升级的分享
  4. vue2+vant 开发公众号
  5. 飞利浦携最新健康科技创新成果亮相2021 CES数字展览会
  6. 虾皮产品如何定价?在线shopee虾皮商品定价工具推荐
  7. 厦大C语言上机 1489 变与不变
  8. DIV横向排列的方法:float/inline-block/flex
  9. mac笔记本安装mysql_mac下安装MySQL完整步骤(图文详情)
  10. UVA 1424 - Salesmen (dp)