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

首頁 > 學院 > 開發設計 > 正文

JBuilder開發技巧

2019-11-18 12:12:49
字體:
來源:轉載
供稿:網友

  技巧之一:同步輸出目錄
  在java開發過程中,有時候我們要創建一些簡單的類來測試某些功能,測試完成后就從磁盤刪除該類的源文件,因為我們不想讓該類出現在最終的產品中。但是,雖然源文件已經被刪除,編譯好的class文件仍可能留在磁盤上,當有其他的類依靠于該類,就可能導致開發環境的不穩定。
  在JBuilder中,我們可以設置一個編譯選項來同步(Synchronize)Java的源文件和對應的類,這樣,一旦Java源文件被刪除,對應的class文件也將被刪除。按照如下步驟設置該同步選項:
  打開 PRoject Project Properties...
  選擇 Compiler 選項卡,看到如下對話框:
   JBuilder開發技巧(圖一)


  注重Synchronize output dir選項。選中該選項就可以實現輸出目錄同步,每次編譯時JBuilder將保證Java源文件與Java class文件的同步。
  輸出調試信息
  很多時候,我們要向標準輸出設備輸出一些簡單的變量值,以便了解程序的運行情況。例如,在程序中加入類似下面的代碼:
  System.out.println("調試信息: 變量的值是" + value);
  當編寫和調試代碼的工作結束,接下去就要進行最后的編譯和打包,這時就要刪除所有上面這些System.out.println代碼。為了避免這些麻煩,我們可以引入一個邏輯變量debugMode,把它設置為true,并在輸出調試信息之前檢查這個變量的值:
  if (debugMode)
  System.out.println("調試信息: 變量的值是" + value);
  所有調試工作結束之后,再把debugMode變量設置成false,這樣程序運行時就不會再輸出調試信息。
  但是,這還不是處理類似調試信息的最佳辦法,我們可以用Diagnostic類來改進。Diagnostic類有三個與輸出流有關的方法,除了標準的System.err輸出流,還可以賦予其他不同的輸出流(例如文件或URL)。最重要的是,當編寫和調試代碼的工作結束之后,我們可以在正式編譯時排除Diagnostic類,從而也就排除了對Diagnostic類方法的所有調用。
  
  下面是Diagnostic類中可用于輸出信息的三個方法:
  
  print(String message):輸出信息
  println(String message):輸出信息,并追加行結束符。
  printlnc(String message):輸出帶有行結束符、計數器(它的值不斷遞進)和Tab字符的信息。
  因此,我們可以把上面的System.out.println替換為:
  Diagnostic.printlnc("調試信息:變量的值是:" + value);
  這些輸出方法的標準輸出設備是System.err,但我們可以用setLogStream(PrintStream log)方法改變它。例如,假設要把輸出發送到log.txt文件,只需插入如下代碼:
  Diagnostic.setLogStream(new java.io.PrintStream(new
   java.io.FileOutputStream("log.txt")));
  最后,在開發期間,我們只需調用一個方法就可以關閉所有的輸出:
  Diagnostic.enable(false);
  資源捆綁
  在Java中,要把直接嵌入到程序的字符串作為資源使用是很輕易的。例如,只要把字符串保存到一個獨立的文件,我們就可以很方便地通過創建不同的文件實現對多種語言的支持。
  為了把“硬編碼”的字符串保存到資源捆綁文件,標準Java API提供兩種辦法:
  · 把鍵-值對以屬性文件的形式保存到文本文件。
  · 把鍵-值對保存到Java源文件中的String[][]數組對象,該Java源文件從java.util.ListResourceBundle擴展。
  
  第一種方法具有較好的靈活性,可以在不重新編譯的前提下修改字符串值。第二種方法具有較好的性能,但每次修改字符串值,包含鍵-值對的Java源代碼文件都必須重新編譯。JBuilder提供了保存硬編碼字符串值的第三種方法,即com.borland.jb.util.ArrayResourceBundle。
  ArrayResourceBundle類通過一個String[]數組對象保存鍵的值,但不包含鍵,我們可以通過索引訪問值,即第一個值的索引為0,第二個值的索引為1,等等。由于可以直接訪問值,因此性能相當好。但也有缺點——維護保存值的文件很困難,因為值和鍵之間沒有直接的(直觀的)聯系。
  異常跟蹤
  在Java中,利用try..catch(..finally)語句可以捕捉和處理異常,非常方便。catch塊的常見異常處理方式是輸出異常,例如把異常輸出到日志文件。
  Exception類有一個printStackTrace()方法,它能夠從發生異常的方法中輸出堆棧信息,默認輸出位置是System.err。但是,有時候我們要把堆棧信息輸出到System.err之外的其他地方,例如在出現異常時把堆棧信息輸出到email,或者用一個對話框顯示出來。
  
  printStackTrace()方法有幾種不同的類型:
  
  · printStackTrace(),輸出到標準錯誤流。
  
  · printStackTrace(PrintStream ps),輸出到名為ps的PrintStream。
  
  · printStackTrace(PrintWriter pw),輸出到名為pw的PrintWriter。
  
  我們可以用最后一種printStackTrace()方法把堆棧信息保存到String對象。只要在String對象中捕捉了堆棧信息,我們就可以方便地在應用的任何地方使用這些信息了。下面的代碼片斷示范了具體的實現步驟:
  
  private String getStackTraceAsString() {
  // StringWriter將包含堆棧信息
  StringWriter stringWriter = new StringWriter();
  //必須將StringWriter封裝成PrintWriter對象,
  //以滿足printStackTrace的要求
  PrintWriter printWriter = new PrintWriter(stringWriter);
  //獲取堆棧信息
  e.printStackTrace(printWriter);
  //轉換成String,并返回該String
  StringBuffer error = stringWriter.getBuffer();
  return error.toString();
  }
  快速查看JavaBean基本信息
  在JBuilder中,要查看JavaBean的內部信息是非常方便的。我們可以把JavaBean拖入設計窗口中,通過Object Inspector查看JavaBean的屬性和事件。但是,即使不通過設計器,我們也可以查看JavaBean的信息,這就是使用BeanInsight(菜單:Tools BeanInsight)。
  JBuilder開發技巧(圖二)
  點擊Examine Bean按鈕就開始分析指定的JavaBean,在BeanInsight Result區域可以看到分析JavaBean的結果。假如要了解更具體的信息,點擊“View Details...”按鈕。
  多個行的屬性值
  屬性文件是保存應用配置信息的好方法。有了屬性文件,修改應用參數時只需修改簡單的屬性文本文件,無需重新編譯整個應用。
  
  屬性文件以“鍵-值”對的形式保存數據。每一個行以鍵開頭,加上一個等于符號,再加上與該鍵對應的值。鍵與值必須在同一個行上,這一點很重要。但是,有些時候,值的內容非常多,假如值能夠分成多行存放,將帶來很大的方便。下面我們就來看看如何使用多行的屬性值。
  
  首先,下面這個代碼片斷讀取test.properties屬性文件:
  
  try {
  Properties p = new Properties();
  File file = new File("test.properties");
  FileInputStream fis = new FileInputStream(file);
  p.load(fis);
   } catch (IOException ioex) {
  ioex.printStackTrace();
   }
  Properties類的load()方法需要一個輸入流作為參數,這里我們向它傳入了一個FileInputStream對象。
  接下來,我們就可以通過調用getProperty()方法從Properties對象獲取屬性值。下面我們來看看test.properties屬性文件的內容:
  
  singleline=Single line value
   multiline =This example shows how we
       can write a property
       value over multiple lines in a
       properties file
  這個屬性文件保存了兩個屬性,鍵分別是singleline和multiline。singleline的值只有一行,而multiline的值有多行。
  
  假如我們調用Properties對象的getProperty()方法,并輸出屬性值,結果將是:
  
  調用:
  
  System.out.println("singleline? " + p.getProperty("singleline"));
   System.out.println("multiline ? " + p.getProperty("multiline"));
  結果:
  singleline? Single line value
   multiline ? This example shows how we
  multiline屬性只包含了第一行值。那么,如何解決這個問題呢?其實很簡單,只需要在每個行的末尾加上轉義字符“/”就可以了。修改后的屬性文件如下所示:
  singleline=Single line value
   multiline =This example shows how we       can write a property       value over multiple lines in a       properties file
  再次讀取屬性文件的值,multiline的屬性值就能夠完整地讀取出來。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 康定县| 北票市| 彝良县| 通化市| 花莲县| 高州市| 大姚县| 乐亭县| 寿阳县| 浦城县| 石台县| 镇安县| 德兴市| 密山市| 纳雍县| 扬州市| 陇西县| 江永县| 西乌珠穆沁旗| 钟祥市| 焉耆| 信丰县| 通许县| 张家川| 德兴市| 临海市| 松阳县| 马鞍山市| 龙山县| 乾安县| 慈利县| 聂荣县| 华蓥市| 高安市| 安国市| 米易县| 黔南| 汾阳市| 调兵山市| 高陵县| 淳化县|