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. SAP中有关差异的一些概念
  2. 编程之美-只考加法的面试题整理
  3. 修改Xmodem/Zmodem上传下载路径
  4. Asp.net在线统计人数
  5. webpack filemanager-webpack-plugin 打多个zip时,出现循环打包情况
  6. Atitit doc mng 文档管理总结目录1. 主要几大内容 12. 存储管理 22.1. 一般来说 ,文档存储在IM网盘note邮箱blog wiki等地 22.2. 文档格式与体
  7. 单片机编程用什么软件?单片机开发软件有哪些?华维告诉你.
  8. linux ARM64 中断底层处理代码分析
  9. 二值化神经网络——BNN
  10. 数据挖掘 NO.2 模型效果评估
  11. tsconfig之strict严格模式相关
  12. MySQL 数据库(包括基础和进阶CURD、事务和索引)
  13. Symantec Backup Exec Agent For Linux防火墙问题
  14. 视频服务器(8) Kurento[3] unity客户端
  15. PAT--1051 复数乘法
  16. QFile创建文件以及递归文件删除文件
  17. 【云原生之Docker实战】使用Docker部署Flarum开源论坛
  18. 什么叫VI、及VI的设计规范
  19. react 条件渲染_React中的条件渲染语法
  20. JS(javascript) 将网站加入收藏夹

热门文章

  1. 正则表达式工具 RegexBuddy 简单使用
  2. anaconda卡在Adding feature channels解决办法
  3. S7-200 Smart入门笔记7——中断2
  4. 小白入门之路之OSPF基础配置实验----尚文网络奎哥
  5. java开发edusoho,概述 · EduSoho开发指南
  6. 计算给定日期的周历(得到某天是周几)
  7. Bash bug漏洞目前最新最全的修复方式
  8. 联想为Superfish用户免费订阅英特尔安全软件
  9. 无线蓝牙耳机哪个牌子的好?无线蓝牙耳机分享
  10. sikuli python java_python+sikuli环境搭建