`
yuanyao
  • 浏览: 147154 次
  • 性别: Icon_minigender_1
  • 来自: 就那小山沟
社区版块
存档分类
最新评论

Java5新特性----静态导入

    博客分类:
  • Java
阅读更多
  今天在看书的时候,看见了“静态导入”的这个概念,上网一查才知道是JDK5.0的新特性,真是孤陋寡闻了,所以好好学习了一下。
  静态导入,在你自己的类中使用静态导入,可以让你使用其它类中定义的类方法和类变量,而且这些类方法和类变量就像在本地定义的一样。也就是说,静态导入允许您在调用其它类中定义的静态成员时,可以忽略类名。

写一段代码理解一下(代码是最好的教科书

Test类里定义了一些静态常量和方法
package org.yaoyuan.test;

public class Test {

	public static final int A = 10;
	public static final double B = 10.00;
	public static final double C = 20.00;
	
	public static double add(double double1, double double2){
		return double1 + double2;
	}
	
	public static double Threeadd(double double1, double double2, double double3){
		return double1 + double2 + double3;
	}
	
	public static void p(String str){
		System.out.println(str);
	}
}


Test2静态导入了Test类里的常量和方法
package org.yaoyuan.test;
import static org.yaoyuan.test.Test.A;
import static org.yaoyuan.test.Test.B;
import static org.yaoyuan.test.Test.C;
import static org.yaoyuan.test.Test.add;
import static org.yaoyuan.test.Test.Threeadd;
import static org.yaoyuan.test.Test.p;

public class Test2 {

	public static void main(String[] args){
		
		System.out.println("A的值是:" + A);
		System.out.println("B的值是:" + B);
		System.out.println("C的值是:" + C);
		
		double E = add(A, B);
		double F = Threeadd(A, B, C);
		
		System.out.println("E的值是:" + E );
		System.out.println("F的值是:" + F);
		
		p("こんにちな,JDK新新特性---静态导入!");
		
	}
}



控制台输出信息:

A的值是:10
B的值是:10.0
C的值是:20.0
E的值是:20.0
F的值是:40.0
こんにちな,JDK新新特性---静态导入!
分享到:
评论
14 楼 xyz20003 2009-02-23  
主要用在mock测试的时候,因为EasyMock提供了多个静态方法,用于实现mock的录制重放验证功能,可以使用import static org.easymock.classextension.EasyMock.*;一次性导入所有的静态方法,之后在测试类中可以直接使用静态方法,节省很多很多代码。
比如下面:
public void testMock() {
    Service service = EasyMock.createMock(Service.class);
    EasyMock.expect(sevice.getById(1L)).andReturn(null);
    EasyMock.replay(service);
    action.setService(service);
    action.execute();
    EasyMock.verify(service);
}
使用了static import之后就变成了
public void testMock() {
    Service service = createMock(Service.class);
    expect(sevice.getById(1L)).andReturn(null);
    replay(service);
    action.setService(service);
    action.execute();
    verify(service);
}
13 楼 sdh5724 2009-02-23  
知道这东西, 但是从来没有用过, 用不用有什么区别啊, 好像没有什么好处啊, 不过也没有什么坏处。 谁能演示下用这个东西的妙处?
12 楼 zhxing 2009-02-23  
感觉不用好。。。有些混淆。。如果多个类的静态引入。。那到时阅读起来该会很麻烦。。
11 楼 nbkangta 2009-02-23  
静态导入真正应用的应该不多
因为确实会比较混乱,一时不明白是静态方法还是私有方法
在测试用例里面用的比较多,assert断言
10 楼 cheng888qi 2009-02-23  
懂了,谢谢。
9 楼 yuanyao 2008-09-16  
54powerman 写道
貌似还不错,不过最好不要用。

楼上
  此话怎么讲
8 楼 54powerman 2008-09-16  
貌似还不错,不过最好不要用。
7 楼 yuanyao 2008-09-15  
WhisperXD 写道
测试的时候能少写不少代码。。

这到是
   挺方便的.
具体的实践,还没尝试过,不知道是不是很好用,但是听了大家的讨论,有机会一定试试,看看到底怎么样.....
6 楼 WhisperXD 2008-09-14  
测试的时候能少写不少代码。。
5 楼 grandboy 2008-09-14  
可能对于静态方法还可以用一下,对于静态常量一般好像没有什么大的用途。因为我们的常量一般都比较长,而且通常会以全部大写来定义常量并且带下划线的形式。所以我还是喜欢用原来的方法。

另外,我们的程序现在还常常要求兼容JDK1.4, 所以我们还不能采用JDK1.5特有的语法。因为人们常常认为JDK1.5只是一个过度的JDK, 到现在为止,给我的感觉好像还是1.4用得比较多,当然我的感觉不一定对呀。反正在我们的客户中是这种情况。我倒更期待JDK1.6的快速成熟。
4 楼 yupengfeiwangcui 2008-09-14  
没用过,不过想问一下,有什么好处?
3 楼 ZangXT 2008-09-13  
感觉还是读起来清晰更重要。
2 楼 yuanyao 2008-09-12  
zeng_love 写道
感觉jdk1.5这个新静态导入特性不怎么好。容易给人造成困扰啊。。就比如这个add方法,让别人感觉是在调用自己的

今天在书上才看到,以前从来这么用过,但是看起来还是很好用的,以后可能还回尝试去应用一下,确实给人一种调用自己的误解,但是前面已经声明了。在写程序的时候,这确实是一种很好的方法。
1 楼 zeng_love 2008-09-12  
感觉jdk1.5这个新静态导入特性不怎么好。容易给人造成困扰啊。。就比如这个add方法,让别人感觉是在调用自己的

相关推荐

    OnJava8-Examples-3.0_soucecode_java_

    这个压缩包包含了丰富的编程示例,旨在帮助读者深入理解Java 8的新特性以及Java编程的基本概念。下面将对其中的关键知识点进行详细的阐述。 1. **Lambda表达式**:Java 8引入了lambda表达式,这是一种简洁的匿名...

    JAVA5-6新特性列表.doc

    Java 5 和 Java 6 是两个重要的 Java 发行版本,它们引入了一系列的新特性和改进,极大地提升了开发效率和代码质量。下面将详细讲解这两个版本的关键特性。 Java 5: 1. **泛型**:泛型允许在类、接口和方法中使用...

    Java5新特性

    ### Java 5 新特性详解 #### 一、引言 随着技术的发展,编程语言也在不断地进步和完善。Java 5 的发布标志着 Java 在功能性和便利性方面迈出了重要的一步。本篇文章将详细介绍 Java 5 中的一些关键特性,这些新特性...

    Java的静态导入源代码

    总结来说,Java的静态导入是一种提高代码简洁度的语法特性,它允许我们直接使用类的静态成员而无需每次都指定类名。然而,过度使用可能会降低代码的可读性和可维护性,因此在编写代码时应根据实际情况权衡利弊,合理...

    JAVA1.5新特性

    JAVA 1.5的新特性是Java发展史上的一个重要里程碑,这一版本引入了一系列创新特性,旨在提升编程效率、增强代码安全性并简化开发流程。以下是对JAVA 1.5新特性的详细解析: ### 1. 泛型 (Generics) #### 概述 泛型...

    Java发展史_&_Java9、10新特性

    - 静态导入 - 注解 - Doug Lea的并发库:`java.util.concurrent` - **2006年:Java 1.6** - 代号:Mustang - 类或接口数量:3793 - 主要新特性或功能: - 支持脚本语言 - Compiler API - JDBC 4.0 API - ...

    java JDK1.5---32位和64位

    7. **静态导入(Static Import)**:允许将类的静态成员导入到作用域中,避免了使用类名来调用静态成员的繁琐。 8. **遍历路径枚举(Iterable Interface)**:使任何实现了`Iterable`接口的类都可以被foreach循环...

    java2python--java代码转python工具

    8. 引用和导入:Java的包和类引用需转换为Python的模块导入机制,例如import语句。 9. 多线程:Java的多线程模型(Thread类)与Python的多线程(threading模块)有差异,转换时需要考虑线程安全和并发控制。 10. ...

    Java2核心技术--中文版第七版高清晰pdf 下载地址

    - **静态导入**:可以直接使用静态成员而无需指定类名。 - **注解**:为代码添加元数据的一种机制,可以用于各种目的,如文档化、编译时检查等。 - **并发API**:增强了对多线程编程的支持,包括新的并发类库等。 #...

    java面试——深圳-乐信-Java高级.zip

    - 静态与非静态成员的区别,静态导入。 - 枚举类型及其使用场景。 - String类的特性,字符串常量池。 2. **多线程**: - 线程的创建方式:Thread类和Runnable接口。 - 线程同步机制:synchronized关键字,...

    JDK新特性之静态导入

    从JDK5.0之后,import语句不仅可以导入类,还增加了导入静态方法和静态域的功能。例如,如果在源文件的顶部,添加一条指令:  Java代码  import java.lang.System.*;  那么就可以使用System类的静态方法和...

    java高级特性 - io流.pdf

    示例代码中首先导入了java.io包下的所有类,并定义了一个hello类和main方法,然后通过File类创建了一个新文件“hello.txt”。这里需要注意的是,在创建文件时使用了File类的静态变量separator和pathSeparator来获取...

    欧柏泰克:Java包的静态导入import static和import的区别

    Java中的静态导入是Java 5中引入的一项新特性,允许开发者在编写代码时更方便地使用静态方法和成员变量。下面我们来详细地了解Java中的静态导入和普通导入的区别。 静态导入(import static) 静态导入是使用...

    使用模式设计及java5新特性在HibernateDAO中的应用

    标题 "使用模式设计及java5新特性在HibernateDAO中的应用" 涉及到的是软件开发中的两个关键领域:设计模式和Java编程语言的新特性,特别是在数据访问对象(DAO)层如何结合使用它们。这篇文章可能详细阐述了如何利用...

    JAVA5新特性介绍.zip

    4. **静态导入(Static Import)**: 这个特性允许开发者直接使用类的静态成员,而无需指定类名。例如,`import static java.lang.Math.PI;`后,就可以直接使用`PI`,而不是`Math.PI`,使得代码更简洁。 5. **可变参数...

    Java 静态导入与编译器语法设置(eclipse)

    Java语言在不断发展,为了提高代码的可读性和简洁性,引入了静态导入(static import)这一特性。在Java 5中,静态导入允许开发者在不指定类名的情况下直接使用类中的静态成员,如静态变量和静态方法。这使得代码...

    java 5.0新特性.txt

    Java 5.0,作为Java发展史上的一个重要里程碑,引入了一系列新特性,极大地提升了开发效率和代码质量。以下是对Java 5.0新特性的详细解析: ### 1. 自动装箱与自动拆箱(AutoBoxing & UnBoxing) - **自动装箱**:...

    JAVA类的特性资料

    5. **构造器**:构造器用于初始化新创建的对象,它的名称与类名相同,没有返回类型。Java提供了默认构造器和自定义构造器,以满足不同初始化需求。 6. **访问修饰符**:public、private、protected以及默认(无修饰...

    java-wrox-Beginning Java 5.0 2005

    - **静态导入**:允许直接访问静态成员而无需前缀。 - **注解**:用于向编译器或工具提供元数据。 - **并发工具包**:包括了新的并发类,如`Executor`框架、`ConcurrentHashMap`等,使得编写多线程程序更加容易。...

Global site tag (gtag.js) - Google Analytics