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");

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

package sis.report;

public class ReportConstant {

public static final String NEWLINE =

System.getProperty("line.separator");

}

在典型的报表类中,由于很多地方都需 要使用常量 NEWLINE ,所以您可以增加一个静态导入,这样可以使您的代码看起来干净 一些 :

package sis.report;

import junit.framework.TestCase;

import sis.studentinfo.*;

import static sis.report.ReportConstant.NEWLINE;

分享到:

java中的导入gnu,【JAVA学习笔记】静态导入相关推荐

  1. Java中的ThreadLocal的使用--学习笔记

    ThreadLocal直译为"线程本地"或"本地线程",如果你真的这么认为,那就错了!其实它就是一个容器,用于存放线程的局部变量,我认为应该叫做ThreadLo ...

  2. java中mediaplay怎么使用_Android学习笔记使用MediaPlay播放音频

    什么是MediaPlayer Android提供的用来控制音频/视频文件或流播放的类,它的使用步骤如下: 代码示范 import androidx.appcompat.app.AppCompatAct ...

  3. Effective Java(第三版) 学习笔记 - 第四章 类和接口 Rule20~Rule25

    Effective Java(第三版) 学习笔记 - 第四章 类和接口 Rule20~Rule25 目录 Rule20 接口优于抽象类 Rule21 为后代设计接口 Rule22 接口只用于定义类型 ...

  4. Java转义工具类StringEscapeUtils的学习笔记

    Java转义工具类StringEscapeUtils的学习笔记 前言 ​ 在java.commons.lang3 的包中有许多方便好用的工具类,类似于处理字符串的StringUtils,处理日期的Da ...

  5. java中的数据结构之HashMap学习

    java中的数据结构之HashMap学习 equal与hashcode equals与hashcode的源码 为什么hashmap中作为键值的类要重写hashcode和equals方法 Integer ...

  6. Linux中常用的文件目录,Linux学习笔记2——Linux中常用文件目录操作命令

    ls 显示文件和目录列表 -l 列出文件的详细信息 -a 列出当前目录所有文件,包含隐藏文件 mkdir 创建目录 -p 父目录不存在情况下先生成父目录 cd 切换目录 touch 生成一个空文件 e ...

  7. java中函数的调用,java中如何调用函数

    java动态调用函数,Java 中使用动态代码,java函数调用,java中如何调用函数 如何在 Java 中调用 C 函数 宗薇 [期刊名称]<网络新媒体技术> [年(卷),期]2000 ...

  8. Java 中的 XML:Java 文档模型的用法

    Java 中的 XML:Java 文档模型的用法 英文原文 内容: 代码对比 DOM JDOM dom4j Electric XML XPP 结束语 下一次... 参考资料 关于作者 对本文的评价 相 ...

  9. 在java中使用JMH(Java Microbenchmark Harness)做性能测试

    文章目录 使用JMH做性能测试 BenchmarkMode Fork和Warmup State和Scope 在java中使用JMH(Java Microbenchmark Harness)做性能测试 ...

  10. java 泛型详解、Java中的泛型方法、 java泛型详解

    本文参考java 泛型详解.Java中的泛型方法. java泛型详解 概述 泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用. 什么是泛型?为什么要使用泛型? 泛型,即& ...

最新文章

  1. LeetCode Maximum Subarray
  2. 【Linux sshfs】sshfs将远程目录挂载到本地目录
  3. hdu 5792 World is Exploding 树状数组
  4. OEL6.8安装虚拟带库模拟器
  5. 堆排序(利用最大堆)
  6. ncbi查找目的基因序列_教你如何利用NCBI寻找目的基因
  7. java凌晨12点_java - JAVA如果我在每天中午12点之后安排我的时间表,会发生什么? - SO中文参考 - www.soinside.com...
  8. Cannot resolve field [product], input field list:[user, EXPR$0]
  9. git 忽略 部分文件夹_git设置忽略文件和目录
  10. python函数作用域与闭包_python基础-08-内置函数、作用域、闭包、递归
  11. 编码方法论,赋能你我他
  12. 全球云端数据仓库领导者 MaxCompute 将于本月10日正式开服美东节点
  13. 14007.xilinx-备份镜像
  14. GCC(-pg) profile mcount | ftrace基础原理
  15. 这可能是最好的RxJava 2.x 入门教程学习系列
  16. python遍历数组冒泡排序_Python算法(一) 数组冒泡排序(难度等级:easy)
  17. Q93:PLY文件对应图形法向量反向问题——以bunny10K为例
  18. 《马克思主义基本原理》复习整理
  19. 非洲Affrike单词
  20. Java实现微信统一服务消息

热门文章

  1. excel亮灯怎么设置_Excel这些超简单的聚光灯制作方法,核对数据再也不用愁!...
  2. android启动Service和ForegroundService
  3. html5input链接跳转,HTML表单标签input标签的使用
  4. c语言 int大端转小端,C++将整型数据转换成大端或小端存储顺序
  5. python excel 截图_法律行业python高级案例——网络侵权自动化批量取证
  6. 光标停留显示文字(html)
  7. lc滤波器是利用电感的感抗_一文读懂LC滤波器简单设计方法及原理介绍 - 全文...
  8. Git 一次性 pull push 所有的分支
  9. 十四、范围(range)
  10. 如何限制上传附件的格式?