java静态导入
一、靜態導入
? ? ? 在Java 5中,import語句得到了增強,以便提供甚至更加強大的減少擊鍵次數功能,雖然一些人爭議說這是以可讀性為代價的。這種新的特性成為靜態導入。當你想使用static成員時,可以使用靜態導入(在API中的類和你自己的類上,都可以使用該特性)。
靜態導入前代碼實例:
public class Static { 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 StaticImport { public static void main(String[] args) { out.println(MAX_VALUE); out.println(toHexString(18)); } }?
靜態導入常例
package cn.edu.scau.mk.testdemo;import static java.lang.System.out; import static java.lang.System.*; /**** @author MK*/ public class TestDemo {public static void main(String[] args) {out.println("out");err.println("err");} }?
二、靜態導入的規則
濫用靜態導入實例
import static java.lang.Double.*; import static java.lang.Math.*; import static java.lang.Integer.*; import static java.text.NumberFormat.*; public class Client {// 輸入半徑和精度要求,計算面積public static void main(String[] args) {double s = PI * parseDouble(args[0]);NumberFormat nf = getInstance();nf.setMaximumFractionDigits(parseInt(args[1]));formatMessage(nf.format(s));}// 格式化消息輸出public static void formatMessage(String s){System.out.println(" 圓面積是:"+s);} }對于靜態導入,一定要遵循兩個規則:
- 不使用*(星號)通配符,除非是導入靜態常量類(只包含常量的類或接口)。
- 方法名是具有明確、清晰表象意義的工具類。
?
具有明確、清晰表象意義的工具類,JUnit 4 中使用的靜態導入的例子
import static org.junit.Assert.*; public class DaoTest {@Testpublic void testInsert(){// 斷言assertEquals("foo", "foo");assertFalse(Boolean.FALSE);} }?
使用靜態導入的幾條原則:
- 你必須說import static, 不能說static import。
- 提防含糊不清的命名static成員。例如,如果你對Integer類和Long類執行了靜態導入,引用MAX_VALUE將導致一個編譯器錯誤,因為Integer和Long都有一個MAX_VALUE常量,并且Java不會知道你在引用哪個MAX_VALUE。
- 你可以在static對象引用、常量(記住,它們是static 或final)和static方法上進行靜態導入。
?
總結
- 上一篇: 电脑弹窗广告带来的尴尬电脑弹窗广告带来的
- 下一篇: java的for循环