import static静态导入是JDK1.5中的新特性。一般我们导入一个类都用 import com.....ClassName;而静态导入是这样:import static com.....ClassName.*;这里的多了个static,还有就是类名ClassName后面多了个 .* ,意思是导入这个类里的静态方法。当然,也可以只导入某个静态方法,只要把 .* 换成静态方法名就行了。然后在这个类中,就可以直接用方法名调用静态方法,而不必用ClassName.方法名 的方式来调用。
这种方法的好处就是可以简化一些操作,例如打印操作System.out.println(...);就可以将其写入一个静态方法print(...),在使用时直接print(...)就可以了。
但是这种方法建议在有很多重复调用的时候使用,如果仅有一到两次调用,不如直接写来的方便
example:
在Java 5中,import语句得到了增强,以便提供甚至更加强大的减少击键次数功能,虽然一些人争议说这是以可读性为代价的。这种新的特性成为静态导入。
当你想使用static成员时,可以使用静态导入(在API中的类和你自己的类上,都可以使用该特性)。下面是静态导入前后的代码实例:
在静态导入之前:
- public class TestStatic {
- public static void main(String[] args) {
- System.out.println(Integer.MAX_VALUE);
- System.out.println(Integer.toHexString(42));
- }
- }
在静态导入之后:
|
|
- import static java.lang.System.out;
- import static java.lang.Integer.*;
-
- public class TestStaticImport {
- public static void main(String[] args) {
- out.println(MAX_VALUE);
- out.println(toHexString(42));
- }
- }
两个类都产生相同的输出:
- 2147483647
- 2a
让我们看一下使用静态导入特性的代码中将发生什么:
1、虽然该特性通常称为“静态导入”,但语法必须是import static,后面跟你想导入的static成员的完全限定名称,或者通配符。在本例中,我们在System类的out对象上进行静态导入。
2、在本例中,我们可能想使用java.lang.Integer类的几个static成员。该静态导入语句使用通配符来表达“我想在此类中的所有静态成员上进行静态导入”。
3、现在我们终于看到静态导入特性的好处!我们不必在System.out.println中键入System。太好了!另外,我们不必在Integer.MAX_VALUE中键入Integer。因此,在这行代码中,我们能够将快捷方式用于静态方法和一个常量。
4、最后,我们进行更多的快捷操作,这次针对Integer类的方法。
关于该特性,我们已经有点儿讽刺意味儿了,但不仅我们是这样的。我们不认为节省少量的击键次数会让代码难于阅读一点,但许多开发人员要求将它添加到语言中。
下面是使用静态导入的几条原则:
- 你必须说import static, 不能说static import。
- 提防含糊不清的命名static成员。例如,如果你对Integer类和Long类执行了静态导入,引用MAX_VALUE将导致一个编译器错误,因为Integer和Long都有一个MAX_VALUE常量,并且Java不会知道你在引用哪个MAX_VALUE。
- 你可以在static对象引用、常量(记住,它们是static 或final)和static方法上进行静态导入。
分享到:
相关推荐
Java包的静态导入import static和import的区别
jekyll-contentful-data-import, Contentful static 站点生成器的插件 Jekyll-Contentful-Data-Import Contentful 为数字团队提供内容基础设施,以支持网站,应用程序和设备中的内容。 CMS不同,Contentful是用来...
import java.net.*; import java.io.*; public class udptest { ///创建一个数据包套接字对象ds,并且指定连接的端口号 ///创建一个数据包对象dp ///指定一个字节数组,用来存储接受的数据 public static void ...
3.Virtual关键字不可以和static private delegate 方法一起使用。 iterface 接口 接口以I开头,后面以单词来重命名。 例如IComputer 接口不允许使用访问修饰符 pulbic private protected 接口不可以使用修饰符 ...
import java.io.*; public class FirstPart{ public static void main(String[] args) throws Exception{ System.out.print("The input Fahrenheit is "); BufferedReader br = new BufferedReader(new ...
import info.monitorenter.cpdetector.io.ASCIIDetector; import info.monitorenter.cpdetector.io.CodepageDetectorProxy; import info.monitorenter.cpdetector.io.JChardetFacade; import info.monitorenter....
假设现有需求如下: 需要一个页面分页展示信息,在该页面添加搜索框以提供...from django.conf.urls.static import static from django.conf import settings from django.contrib.staticfiles.urls import staticfi
电池广播信息// 电池状态import static android.os.BatteryManager.EXTRA_STATUS;// 未知import static android.os.BatteryManager.BATTERY_STATUS_UNKNOWN;// 充电中import static android.os.BatteryManager....
import static java.sql.DriverManager.getConnection; import java.rmi.Remote; import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement; public abstract class BaseDao ...
import java.util.Scanner; public class Test3 { public static void main(String[] args) { System.out.println("请您输入要打印的金字塔的行数: "); Scanner sca=new Scanner(System.in); int nu=sca....
主要介绍了Java里的static import使用小结,本文给出了一些使用示例,并总结了一些使用特性,需要的朋友可以参考下
android 游戏开发入门指南,英文版本。
import static org.eck.spec.Spectre.describe ; import static org.eck.spec.Spectre.before ; import static org.eck.spec.Spectre.after ; import static org.eck.spec.Spectre.it ; import java.util.ArrayList ...
Android Menu和ListView 整合设计 源码 package com.MyMenu; import android.app.Activity; import android.database.Cursor; import android.database.sqlite.SQLiteCursor; import android.os.Bundle; import ...
从JDK5.0之后,import语句不仅可以导入类,还增加了导入静态方法和静态域的功能。例如,如果在源文件的顶部,添加一条指令: Java代码 import java.lang.System.*;... import static java.lang.System.out;
import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.table.*; public class MyCalendar extends JApplet { public...
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.ServerSocket; import java.net.Socket; import java.text....
import java.io.IOException;import java.nio.ByteBuffer;import android.app.Activity;import android.media.MediaCodec;import android.media.MediaCodec.BufferInfo;import android.media.MediaCodecInfo;import ...
import java.awt.Point; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Date; import java.util.EnumSet; import java.util.HashSet; import java....
import static org.hamcrest.Matchers.notNullValue; import static org.junit.Assert.assertThat; import org.cassandraunit.dataset.IDataSet; import org.cassandraunit.dataset.xml.ClassPathXmlDataSet; ...