国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設(shè)計 > 正文

自定義工具庫

2019-11-18 11:55:03
字體:
供稿:網(wǎng)友

  自定義工具庫
  把握前述的知識后,接下來就可以開始創(chuàng)建自己的工具庫,以便減少或者完全消除重復(fù)的代碼。例如,可為System.out.PRintln()創(chuàng)建一個別名,減少重復(fù)鍵入的代碼量。它可以是名為tools的一個包(package)的一部分:
  //: P.java
  // The P.rint & P.rintln shorthand
  package com.brUCeeckel.tools;
  public class P {
   public static void rint(Object obj) {
    System.out.print(obj);
   }
   public static void rint(String s) {
    System.out.print(s);
   }
   public static void rint(char[] s) {
    System.out.print(s);
   }
   public static void rint(char c) {
    System.out.print(c);
   }
   public static void rint(int i) {
    System.out.print(i);
   }
   public static void rint(long l) {
    System.out.print(l);
   }
   public static void rint(float f) {
    System.out.print(f);
   }
   public static void rint(double d) {
    System.out.print(d);
   }
   public static void rint(boolean b) {
    System.out.print(b);
   }
   public static void rintln() {
    System.out.println();
   }
   public static void rintln(Object obj) {
    System.out.println(obj);
   }
   public static void rintln(String s) {
    System.out.println(s);
   }
   public static void rintln(char[] s) {
    System.out.println(s);
   }
   public static void rintln(char c) {
    System.out.println(c);
   }
   public static void rintln(int i) {
    System.out.println(i);
   }
   public static void rintln(long l) {
    System.out.println(l);
   }
   public static void rintln(float f) {
    System.out.println(f);
   }
   public static void rintln(double d) {
    System.out.println(d);
   }
   public static void rintln(boolean b) {
    System.out.println(b);
   }
  } ///:~
  所有不同的數(shù)據(jù)類型現(xiàn)在都可以在一個新行輸出(P.rintln()),或者不在一個新行輸出(P.rint())。
  大家可能會猜想這個文件所在的目錄必須從某個CLASSPATH位置開始,然后繼續(xù)com/bruceeckel/tools。編譯完畢后,利用一個import語句,即可在自己系統(tǒng)的任何地方使用P.class文件。如下所示:
  ToolTest.java
  所以從現(xiàn)在開始,無論什么時候只要做出了一個有用的新工具,就可將其加入tools目錄(或者自己的個人util或tools目錄)。
  CLASSPATH的陷阱
  P.java文件存在一個非常有趣的陷阱。非凡是對于早期的Java實現(xiàn)方案來說,類路徑的正確設(shè)定通常都是很困難的一項工作。編寫這本書的時候,我引入了P.java文件,它最初看起來似乎工作很正常。但在某些情況下,卻開始出現(xiàn)中斷。在很長的時間里,我都確信這是Java或其他什么在實現(xiàn)時一個錯誤。但最后,我終于發(fā)現(xiàn)在一個地方引入了一個程序(即第17章要說明的CodePackager.java),它使用了一個不同的類P。由于它作為一個工具使用,所以有時候會進入類路徑里;另一些時候則不會這樣。但只要它進入類路徑,那么假若執(zhí)行的程序需要尋找com.bruceeckel.tools中的類,Java首先發(fā)現(xiàn)的就是CodePackager.java中的P。此時,編譯器會報告一個特定的方法沒有找到。這當然是非常令人頭疼的,因為我們在前面的類P里明明看到了這個方法,而且根本沒有更多的診斷報告可為我們提供一條線索,讓我們知道找到的是一個完全不同的類(那甚至不是public的)。
  乍一看來,這似乎是編譯器的一個錯誤,但假若考察import語句,就會發(fā)現(xiàn)它只是說:“在這里可能發(fā)現(xiàn)了P”。然而,我們假定的是編譯器搜索自己類路徑的任何地方,所以一旦它發(fā)現(xiàn)一個P,就會使用它;若在搜索過程中發(fā)現(xiàn)了“錯誤的”一個,它就會停止搜索。這與我們在前面表述的稍微有些區(qū)別,因為存在一些討厭的類,它們都位于包內(nèi)。而這里有一個不在包內(nèi)的P,但仍可在常規(guī)的類路徑搜索過程中找到。
  假如您碰到象這樣的情況,請務(wù)必保證對于類路徑的每個地方,每個名字都僅存在一個類。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 盈江县| 中西区| 漯河市| 太保市| 化州市| 寿宁县| 灵璧县| 荥经县| 舒城县| 民勤县| 苍溪县| 五原县| 自贡市| 宁蒗| 石门县| 康马县| 静乐县| 武冈市| 璧山县| 阳新县| 竹山县| 锦屏县| 许昌县| 大丰市| 合水县| 渭南市| 安吉县| 凤冈县| 洮南市| 来凤县| 松桃| 中阳县| 德州市| 浙江省| 开封市| 石城县| 巴林左旗| 宜章县| 安丘市| 定兴县| 商河县|