亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

JBuilder 9.0開發實用技巧七招

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

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


  注重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 9.0開發實用技巧七招(圖二)

  點擊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的屬性值就能夠完整地讀取出來

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人444kkkk在线观看| 欧美在线不卡区| 久久久www成人免费精品| 97视频人免费观看| 亚洲黄色成人网| 国产精品爽黄69天堂a| 国产精品海角社区在线观看| 深夜福利日韩在线看| 超碰97人人做人人爱少妇| 91国产视频在线播放| 国产一区二区三区高清在线观看| 国产一区二区色| 欧美日韩精品中文字幕| 亚洲精品视频在线观看视频| 国产日韩欧美在线看| 亚洲欧美成人网| 欧美激情xxxx性bbbb| 精品美女国产在线| 久久精品视频在线观看| 国产成人午夜视频网址| 欧美日韩免费观看中文| 国产精品青草久久久久福利99| 亚洲午夜色婷婷在线| 亚洲激情 国产| 欧美大荫蒂xxx| 欧美激情视频三区| 97人洗澡人人免费公开视频碰碰碰| 欧美激情在线播放| 538国产精品一区二区免费视频| 国产亚洲视频在线观看| 亚洲人成网7777777国产| 国产精品一区二区性色av| 欧美精品videosex性欧美| 日韩激情视频在线| 日韩中文字幕精品| 亚洲色图美腿丝袜| 亚洲精品一区二区三区不| 秋霞成人午夜鲁丝一区二区三区| 日韩成人免费视频| 亚洲第一精品久久忘忧草社区| 亚洲精品日韩丝袜精品| 久久国产色av| 国产在线精品播放| 久久久精品美女| 久久69精品久久久久久国产越南| 国色天香2019中文字幕在线观看| 久久久亚洲国产天美传媒修理工| 久久国产精品久久久久| 日韩成人在线视频网站| 全色精品综合影院| 日韩av电影院| 中文字幕日韩综合av| 欧美激情精品久久久久| 日韩高清电影免费观看完整| 欧美—级高清免费播放| 欧美日韩亚洲精品一区二区三区| 亚洲激情视频网| 中文国产成人精品久久一| 亚洲自拍偷拍福利| 欧洲成人性视频| 日本一区二区在线免费播放| 亚洲免费视频网站| 欧美高清激情视频| 欧美极度另类性三渗透| 欧美资源在线观看| 久操成人在线视频| 91国内在线视频| 91精品国产高清自在线| 欧美有码在线观看视频| 2019中文字幕在线观看| 国产精品一区二区性色av| 欧美xxxwww| 国产精品久久久久久超碰| 欧美性猛交xxxx富婆| 亚洲欧洲免费视频| 欧美日韩国产成人在线| 久久久久九九九九| 久久人人爽人人爽人人片亚洲| 亚洲成人久久电影| 亚洲人午夜色婷婷| 成人天堂噜噜噜| 国产69精品99久久久久久宅男| 亚洲男人天堂古典| 激情久久av一区av二区av三区| 国产精自产拍久久久久久蜜| 日韩电视剧在线观看免费网站| 亚洲第一福利网| 国产精品偷伦视频免费观看国产| 最新69国产成人精品视频免费| 欧美洲成人男女午夜视频| 亚洲999一在线观看www| 播播国产欧美激情| 午夜精品久久久久久99热软件| 久久久99久久精品女同性| 久久九九精品99国产精品| 日韩久久免费电影| 久久久精品视频在线观看| 91av在线网站| 一本久久综合亚洲鲁鲁| 国产成人一区二区三区小说| 欧美成人精品在线播放| 欧美精品在线第一页| 亚洲人成在线免费观看| 国产精品成人av在线| 久久青草福利网站| 久热精品视频在线观看| 伊人男人综合视频网| 亚洲人成电影网站| 日韩精品极品在线观看| 成人av资源在线播放| 欧日韩不卡在线视频| 欧美性videos高清精品| 国产精品黄色影片导航在线观看| 欧美成人中文字幕| 97香蕉久久夜色精品国产| 欧美精品在线第一页| 久久99久久久久久久噜噜| 国产精品7m视频| 国产一区二区动漫| 日韩电影中文字幕av| 久久99国产综合精品女同| 欧美日韩综合视频网址| 国产精品美女免费看| 51视频国产精品一区二区| 亚洲无限乱码一二三四麻| 国产精品男女猛烈高潮激情| 久久夜色精品国产亚洲aⅴ| 日韩综合视频在线观看| 97国产精品久久| 国产精品一区二区三区免费视频| 久久91亚洲人成电影网站| 精品丝袜一区二区三区| 亚洲a在线观看| 亚洲精品久久久久久久久久久| 欧美精品在线极品| 精品激情国产视频| 国产色婷婷国产综合在线理论片a| 北条麻妃在线一区二区| 精品国产精品三级精品av网址| 亚洲一区二区三区四区在线播放| 亚洲第一偷拍网| 操日韩av在线电影| 欧美一级电影在线| 久久免费视频这里只有精品| 午夜精品三级视频福利| 久久久久久18| 一区二区三区无码高清视频| 一区二区欧美在线| 亚洲天堂av图片| 午夜精品久久久久久久99黑人| 国产成人精品亚洲精品| 91精品久久久久久综合乱菊| 日韩av手机在线观看| 亚洲最大福利网站| 色偷偷888欧美精品久久久| 国产一区二区三区免费视频| 久久精品国产久精国产一老狼| 裸体女人亚洲精品一区| 亚洲欧美精品伊人久久| 成人免费在线视频网址| 日韩大片免费观看视频播放| 亚洲成人黄色网| 欧美色播在线播放| 日韩av不卡在线|