`
wangli9li
  • 浏览: 33975 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

static import

阅读更多
【网摘】
在J2SE 5.0版本中,java语言引入了很多新的特性,本文将主要介绍static import。static import主要解决的问题是方便开发人员创建和使用全局的常量以及静态的方法。要使用这一新的特性您应该首先从java.sun.com下载最新的j2sdk 5.0。

    在《effective java》中作者曾经谈到在接口中定义常量是很糟糕的一种使用方法,我们应该始终使用接口来定义类型。但是在实际开发工作中还是有很多人这样使用接口,他们这样做的原因是这样定义常量使用起来很方便。例如如下定义方式:
   public interface BadIrrationalConstants {
     public static final double SQRT_TWO = 1.414;
     public static final double SQRT_THREE = 1.732;
   }

public interface BadTranscendentalConstants {
     public static final double PI = 3.14159;
     public static final double E = 2.71828;}
 

    如果你想在自己的类中使用这些接口中定义的常量的时候,那么你必须要实现这些接口。比如
     public class BadUseOfConstants implements
     BadTranscendentalConstants, BadIrrationalConstants {

    public static double sinPiOverFour() {
       return SQRT_TWO / 2;
     }

     public static void main(String[] args) {
       System.out.println("Pi is approximately " + PI);
       System.out.println("The sin of Pi/4 is about " +
         sinPiOverFour());
     }
   }
    这样这些常量就变成你的类的一部分了,如果这个类不是final的话,其它的类继承了这个类又使得它继承了这些常量,但是这也许不是用户需要的结果。

    针对这样的情况,我们可以这样做,那就是在一个类中定义这些常量,使用的时候可以通过ClassName.variableName来访问他们。例如
package staticEx;
   public class IrrationalConstants {
     public static final double SQRT_TWO = 1.414;
     public static final double SQRT_THREE = 1.732;
   }
package staticEx;
   public class TranscendentalConstants {
     public static final double PI = 3.14159;
     public static final double E = 2.71828;
   }

    现在J2SE 5.0提供了静态导入的功能,你只需要在import关键字后面写一个static关键字就可以直接使用类中定义的常量了,例如
   import static staticEx.IrrationalConstants.SQRT_TWO;
   import static staticEx.IrrationalConstants.SQRT_THREE;
   import static staticEx.TranscendentalConstants.PI;

    当然你也可以使用.*的格式,例如
import static staticEx.IrrationalConstants.*;的格式 
package staticEx;
   import static staticEx.IrrationalConstants.SQRT_TWO;
   import static staticEx.IrrationalConstants.SQRT_THREE;
   import static staticEx.TranscendentalConstants.PI;
   public class ConstantsWithStaticImport {
     public static double sinPiOverFour() {
       return SQRT_TWO / 2;
     }
     public static void main(String[] args) {
       System.out.println("Pi is approximately " + PI);
       System.out.println("The sin of Pi/4 is about " +
         sinPiOverFour());
     }
   }

    运行该程序会得到
   Pi is approximately 3.14159
   The sin of Pi/4 is about 0.707

    在这里提醒大家一下,如果你过多的使用.*的样式,那么可能会给程序的可读性带来负面的影响。因为你很难看出这个变量在哪里定义的。

    对常量定义是如此,对静态方法的使用也适用。例如下面的例子
  package staticEx;

   public class IrrationalConstants2 {
     public static final double SQRT_TWO = 1.414;
     public static final double SQRT_THREE = 1.732;

     public static double sinPiOverFour() {
       return SQRT_TWO / 2;
     }
   }
package staticEx;

   import static staticEx.IrrationalConstants2.*;
   import static staticEx.TranscendentalConstants.*;

   public class ConstantsWithStaticImport2 {

     public static void main(String[] args) {
       System.out.println("Pi is approximately " + PI);
       System.out.println("The sin of Pi/4 is about " +
         sinPiOverFour());
     }
   }
    在ConstantsWithStaticImport2类中静态导入IrrationalConstants2后就可以直接使用它的静态方法sinPiOverFour()了。
分享到:
评论

相关推荐

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

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

    Java里的static import使用小结

    Java中的`static import`语句是在JDK 1.5版本中引入的一个新特性,它允许程序员可以直接导入类中的静态成员(包括静态方法和静态变量),而无需指定类名。这个特性使得代码更加简洁,提高了可读性,但也可能带来一些...

    java视频 static关键字

    4. **静态导入(Static Import)**: Java允许静态导入,这意味着你可以直接引用类的`static`成员,而不需要指定类名。例如: ```java import static java.lang.Math.PI; ... double area = PI * radius * ...

    22_static video

    5. **静态导包(Static Import)**:Java 5引入了静态导入功能,允许开发者直接使用类的静态成员,而无需指定类名。例如,`import static java.lang.Math.*;`可以让代码直接使用`Math`类的所有静态方法。 在这个...

    static 的使用场合

    5. **静态导入(Static Import)** - Java 5引入了静态导入功能,允许开发者直接引用类的静态成员,而不需要指定类名。 ```java import static java.lang.Math.*; double result = sqrt(16); // 直接使用Math类...

    4static封装类.rar在类的声明里查看有无静态元素(static

    4. 静态导入(Static Import): 在某些语言中,如Java,可以使用静态导入来避免在代码中频繁地写类名。这使得可以直接使用静态方法或变量,而不需要指定类名。例如: ```java import static java.lang.Math.*; ...

    在Eclipse中导入static元素Java开发Java

    6. 使用static import:Java允许使用`import static`语句,这会将指定类的静态成员直接引入当前作用域,无需类名前缀。但这应谨慎使用,因为它可能会导致命名冲突,降低代码可读性。 在实际开发中,合理地导入和...

    要static还是不要static?

    5. **静态导入**:Java 5 引入了 `static import`,允许将类的静态成员引入到当前作用域,简化代码。 现在让我们看看提供的 `InnerInterfaceSubClassAccessTest.java` 文件,这可能涉及到静态内部类和接口的使用。...

    Django 简单实现分页与搜索功能的示例代码

    假设现有需求如下: 需要一个页面分页展示信息,在该页面添加搜索框以提供...from django.conf.urls.static import static from django.conf import settings from django.contrib.staticfiles.urls import staticfi

    MLDN魔乐JAVA_10static关键字.rar

    在Java 5及以上版本中,你可以使用`static import`语句引入类的静态成员,这样在后续代码中可以直接使用它们,而无需通过类名来引用。例如,`import static java.lang.Math.PI;`后,你就可以直接写`PI`而不是`Math....

    Java使用static

    1. **便捷性**:通过`import static`可以将类的静态成员直接引入到当前作用域,减少代码中的类名引用。 ```java import static java.lang.Math.PI; double area = PI * radius * radius; ``` 五、静态嵌套类...

    java中带static关键字的程序内存分析

    - Java允许使用`import static`语句,可以直接引用类的静态成员,提高代码可读性。 总的来说,`static`关键字在Java中有着广泛的应用,理解它的内存行为对于编写高效、无内存泄漏的代码至关重要。正确使用`static`...

    oracle认证的java考试(22)

    #### 考点一:静态导入(Static Import) **定义与作用** 在 Java 中,`import static` 是一种特殊的导入方式,允许直接访问静态成员(方法或字段),而无需通过类名前缀。这种方式可以使代码更加简洁、清晰。 **...

    day02_分类和static.zip

    此外,"static"还有其他用途,比如静态导入(static import),它允许你在代码中直接引用类的静态成员,而不需要指定类名。静态初始化块(static initialization block)则是在类加载时执行的一段代码,用于初始化...

    Java语言规范(第三版) 英文

    It provides full coverage of all new features added since the previous edition, including generics, annotations, asserts, autoboxing, enums, for-each loops, variable arity methods, and static import ...

    笔记day041

    import static java.lang.Math.PI; ... double area = PI * radius * radius; ``` 这样可以减少代码的冗余,但可能会导致命名冲突,因此需谨慎使用。 总结,`static`关键字在Java中扮演着重要的角色,它使得...

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

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

    JDK 1.5新特性

    这些新特性包括泛型(Generics)、增强的“for”循环(Enhanced For loop)、自动装箱/拆箱(Autoboxing/Unboxing)、类型安全的枚举(Typesafe enums)、静态导入(Static import)以及元数据(Metadata)。...

    Java的静态导入源代码

    在Java编程语言中,静态导入(static import)是一种特殊的导入方式,它允许程序员直接使用类中的静态成员,而无需每次都指定类名。这种特性在2004年发布的Java 5.0版本中引入,目的是为了提高代码的可读性和简洁性...

    java内功修炼.pdf

    通过`import static`语句,如`import static java.lang.Math.*;`,可以导入Math类的所有静态方法,或者只导入特定的方法,如`import static java.lang.Math.abs;`。这使得代码更为简洁,减少了不必要的类名重复。 2...

Global site tag (gtag.js) - Google Analytics