熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

JBuilder 9.0開發實用技巧七招

2013-11-23 19:24:35  來源: Java核心技術 

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

  注意Synchronize output dir選項選中該選項就可以實現輸出目錄同步每次編譯時JBuilder將保證Java源文件與Java class文件的同步
  輸出調試信息
  
  很多時候我們要向標准輸出設備輸出一些簡單的變量值以便了解程序的運行情況例如在程序中加入類似下面的代碼
  
  Systemoutprintln(調試信息: 變量的值是 + value);
  
  當編寫和調試代碼的工作結束接下去就要進行最後的編譯和打包這時就要刪除所有上面這些Systemoutprintln代碼為了避免這些麻煩我們可以引入一個邏輯變量debugMode把它設置為true並在輸出調試信息之前檢查這個變量的值
  
  if (debugMode)
  Systemoutprintln(調試信息: 變量的值是 + value);
  
  所有調試工作結束之後再把debugMode變量設置成false這樣程序運行時就不會再輸出調試信息
  
  但是這還不是處理類似調試信息的最佳辦法我們可以用Diagnostic類來改進Diagnostic類有三個與輸出流有關的方法除了標准的Systemerr輸出流還可以賦予其他不同的輸出流(例如文件或URL)最重要的是當編寫和調試代碼的工作結束之後我們可以在正式編譯時排除Diagnostic類從而也就排除了對Diagnostic類方法的所有調用
  
  下面是Diagnostic類中可用於輸出信息的三個方法
  
  print(String message)輸出信息
  println(String message)輸出信息並追加行結束符
  printlnc(String message)輸出帶有行結束符計數器(它的值不斷遞進)和Tab字符的信息
  
  因此我們可以把上面的Systemoutprintln替換為
  
  Diagnosticprintlnc(調試信息變量的值是 + value);
  
  這些輸出方法的標准輸出設備是Systemerr但我們可以用setLogStream(PrintStream log)方法改變它例如假設要把輸出發送到logtxt文件只需插入如下代碼
  
  DiagnosticsetLogStream(new javaioPrintStream(new
  javaioFileOutputStream(logtxt)));
  
  最後在開發期間我們只需調用一個方法就可以關閉所有的輸出
  
  Diagnosticenable(false);
  
  資源捆綁
  在Java中要把直接嵌入到程序的字符串作為資源使用是很容易的例如只要把字符串保存到一個獨立的文件我們就可以很方便地通過創建不同的文件實現對多種語言的支持
  
  為了把硬編碼的字符串保存到資源捆綁文件標准Java API提供兩種辦法
  
  &#; 把鍵值對以屬性文件的形式保存到文本文件
  
  &#; 把鍵值對保存到Java源文件中的String[][]數組對象該Java源文件從javautilListResourceBundle擴展
  
  第一種方法具有較好的靈活性可以在不重新編譯的前提下修改字符串值第二種方法具有較好的性能但每次修改字符串值包含鍵值對的Java源代碼文件都必須重新編譯JBuilder提供了保存硬編碼字符串值的第三種方法即comborlandjbutilArrayResourceBundle
  
  ArrayResourceBundle類通過一個String[]數組對象保存鍵的值但不包含鍵我們可以通過索引訪問值即第一個值的索引為第二個值的索引為等等由於可以直接訪問值因此性能相當好但也有缺點——維護保存值的文件很困難因為值和鍵之間沒有直接的(直觀的)聯系
  異常跟蹤
  
  在Java中利用trycatch(finally)語句可以捕獲和處理異常非常方便catch塊的常見異常處理方式是輸出異常例如把異常輸出到日志文件
  
  Exception類有一個printStackTrace()方法它能夠從發生異常的方法中輸出堆棧信息默認輸出位置是Systemerr但是有時候我們要把堆棧信息輸出到Systemerr之外的其他地方例如在出現異常時把堆棧信息輸出到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);
  //獲取堆棧信息
  eprintStackTrace(printWriter);
  //轉換成String並返回該String
  StringBuffer error = stringWritergetBuffer();
  return errortoString();
  }
  
  快速查看JavaBean基本信息
  在JBuilder中要查看JavaBean的內部信息是非常方便的我們可以把JavaBean拖入設計窗口中通過Object Inspector查看JavaBean的屬性和事件但是即使不通過設計器我們也可以查看JavaBean的信息這就是使用BeanInsight(菜單Tools | BeanInsight)
  

  點擊Examine Bean按鈕就開始分析指定的JavaBean在BeanInsight Result區域可以看到分析JavaBean的結果如果要了解更詳細的信息點擊View Details按鈕
  
  多個行的屬性值
  屬性文件是保存應用配置信息的好方法有了屬性文件修改應用參數時只需修改簡單的屬性文本文件無需重新編譯整個應用
  
  屬性文件以對的形式保存數據每一個行以鍵開頭加上一個等於符號再加上與該鍵對應的值鍵與值必須在同一個行上這一點很重要但是有些時候值的內容非常多如果值能夠分成多行存放將帶來很大的方便下面我們就來看看如何使用多行的屬性值
  
  首先下面這個代碼片斷讀取testproperties屬性文件
  
  try {
  Properties p = new Properties();
  File file = new File(testproperties);
  FileInputStream fis = new FileInputStream(file);
  pload(fis);
  } catch (IOException ioex) {
  ioexprintStackTrace();
  }
  
  Properties類的load()方法需要一個輸入流作為參數這裡我們向它傳入了一個FileInputStream對象
  
  接下來我們就可以通過調用getProperty()方法從Properties對象獲取屬性值下面我們來看看testproperties屬性文件的內容
  
  singleline=Single line value
  multiline =This example shows how we
  can write a property
  value over multiple lines in a
  properties file
  
  這個屬性文件保存了兩個屬性鍵分別是singleline和multilinesingleline的值只有一行而multiline的值有多行
  
  如果我們調用Properties對象的getProperty()方法並輸出屬性值結果將是
  
  調用
  
  Systemoutprintln(singleline? + pgetProperty(singleline));
  Systemoutprintln(multiline ? + pgetProperty(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的屬性值就能夠完整地讀取出來
  

From:http://tw.wingwit.com/Article/program/Java/hx/201311/26814.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.