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. 使用SQL Server Analysis Services数据挖掘的关联规则实现商品推荐功能(五)
  2. 贝索斯:亚马逊正探讨人脸识别如何监管
  3. Delphi的四舍五入函数
  4. iqooz1手机能搭载鸿蒙吗,我最近看中2款手机,iQOOZ1x和荣耀30青春版选谁更好?你们知道吗...
  5. Effectice Java之始终覆盖toString(十)
  6. SQL入门(3):定义约束/断言assertion/触发器trigger
  7. 关于IIS 7.5 限制连接数与流量限制模块
  8. iOSQuart2D绘图之UIImage简单使用
  9. 记录几条简单的正则表达式
  10. STL---常用函数用法大集合-=-更新中...
  11. 营销管理手册_某连锁动物医院营销管理咨询项目方案成功汇报
  12. C陷阱与缺陷阅读笔记(上)
  13. matlab mosek安装
  14. 出租车计费程序php,出租车计价器VHDL程序
  15. 2021阿里巴巴国际站产品关键词来源(一)
  16. Python给excel加密(linux可用版)
  17. 机器学习6:——Pandas——6:高级处理3:数据合并
  18. 什么是手机号码姓名实名认证 手机号码查姓名 手机号实名认证API
  19. PS查看设计图中文字大小,颜色
  20. sa结构组网方式_5G SA网络架构及组网规范

热门文章

  1. 报错:adding a window to a container
  2. inverse smoothstep
  3. Ubuntu耳机没有声音
  4. 测试管理之--用例管理
  5. 实现输出3的倍数3,6,9,12,15,18
  6. html怎样设置背景放射线,PPT怎么设计放射线效果背景图
  7. 酷壳网陈皓:Why C++?王者归来
  8. 【MyBatis-SpringBoot】 MyBatis 与SpringBoot整合
  9. 《了不起的盖茨比》有感
  10. jsp中C标签c:forEach的使用