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

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲一区二区久久久| 成人h猎奇视频网站| 亚洲a级在线播放观看| 国产日韩欧美在线| 清纯唯美日韩制服另类| 91精品国产自产在线观看永久| 日韩精品免费在线视频| 中文字幕精品视频| 欧美日韩亚洲系列| 久久久久久久999| 国产亚洲视频中文字幕视频| 狠狠躁夜夜躁人人爽天天天天97| 精品无人区乱码1区2区3区在线| 久久久久一本一区二区青青蜜月| 萌白酱国产一区二区| 亚洲伦理中文字幕| 国产一区二区三区久久精品| 欧美一级电影久久| 九九久久久久99精品| 日韩中文字幕网| 日韩欧美有码在线| 欧美伊久线香蕉线新在线| 久久久av免费| 欧美日韩人人澡狠狠躁视频| 亚洲男女自偷自拍图片另类| 在线观看日韩专区| 日韩精品视频免费| 国产一区二区三区网站| 精品久久久久久中文字幕一区奶水| 亚洲第一区第一页| 亚洲一区二区三区777| 日韩欧美亚洲国产一区| www.日本久久久久com.| 欧美乱大交做爰xxxⅹ性3| 日韩成人高清在线| 26uuu另类亚洲欧美日本老年| 久久综合88中文色鬼| 久久久久久av| 精品成人69xx.xyz| 一区二区三区视频免费| 日韩在线免费视频观看| 国产精品av电影| 伊人久久久久久久久久久| 中文字幕在线亚洲| 欧美黑人一区二区三区| 欧美另类在线观看| 成人国产在线视频| 日本免费一区二区三区视频观看| 欧美成人精品影院| 成人午夜高潮视频| 欧美黑人性生活视频| 欧美视频国产精品| 久久九九亚洲综合| 91po在线观看91精品国产性色| 欧美极品第一页| 亚洲国产精品va在线观看黑人| 成人日韩在线电影| 精品调教chinesegay| 亚洲精品国产精品自产a区红杏吧| **欧美日韩vr在线| 精品亚洲一区二区三区四区五区| 国产日韩欧美在线观看| 国产亚洲精品综合一区91| 欧美日韩亚洲视频一区| 久久精品国产亚洲7777| 一区三区二区视频| 欧美电影免费观看| 福利一区视频在线观看| 91国在线精品国内播放| 精品无人区乱码1区2区3区在线| 黄色精品一区二区| 91久久精品国产91性色| 久久久免费观看视频| 国产aaa精品| 亚洲白拍色综合图区| 久久免费精品视频| 欧美日韩日本国产| 成人黄色av免费在线观看| 日韩亚洲国产中文字幕| 亚洲精品小视频在线观看| 久久69精品久久久久久久电影好| 97视频免费在线观看| 久久久成人精品视频| 国产精品视频精品视频| 欧美视频中文在线看| 国产精品一区二区三区久久久| 欧美xxxx14xxxxx性爽| 亚洲欧美日本另类| 亚洲人成网站在线播| 亚洲影视中文字幕| 欧美激情视频网站| 久久久天堂国产精品女人| 欧美国产日韩xxxxx| zzjj国产精品一区二区| 午夜精品福利在线观看| 国产精品久久久久久网站| 中日韩美女免费视频网站在线观看| 久久国产一区二区三区| 免费91在线视频| 国产在线98福利播放视频| 韩国v欧美v日本v亚洲| 欧美精品18videosex性欧美| 久久久久久国产三级电影| 国产日韩欧美中文在线播放| 亚洲精品午夜精品| 国产精品亚洲激情| 欧美激情综合亚洲一二区| 91精品国产综合久久香蕉的用户体验| 亚洲精品美女网站| 成人黄色影片在线| 91精品国产色综合久久不卡98口| 欧美日韩在线另类| 日韩成人中文字幕| 国产精品久久久久久超碰| 中文欧美日本在线资源| 亚洲乱码国产乱码精品精| 久久国产精品首页| 欧美性猛交xxxx富婆| 成人h猎奇视频网站| 久久精品国产2020观看福利| 成人激情免费在线| 午夜精品一区二区三区视频免费看| 国产成人avxxxxx在线看| 国产精品福利在线| 最新国产精品拍自在线播放| 91久久久久久国产精品| 久久久久久国产精品久久| 国产精品稀缺呦系列在线| 午夜精品www| 久久久久久久久久久亚洲| 日韩激情在线视频| 韩国19禁主播vip福利视频| 日韩大片在线观看视频| 按摩亚洲人久久| 日韩中文综合网| 91久久精品美女高潮| 日韩精品免费在线视频| 精品国产91久久久久久老师| 中文字幕欧美日韩va免费视频| 国产免费一区视频观看免费| 亚洲免费视频一区二区| 日韩av免费看网站| 亚洲第一页中文字幕| 91久久久在线| 国产精品三级美女白浆呻吟| 最近2019好看的中文字幕免费| 97香蕉久久超级碰碰高清版| 91精品国产高清自在线看超| 亚洲一区二区三区成人在线视频精品| 国产精品丝袜久久久久久不卡| 亚洲性生活视频在线观看| 国产精品久久久久久久久久小说| 这里只有精品在线观看| 久久资源免费视频| 亚洲成人激情在线| 日韩久久精品电影| 欧美激情18p| 亚洲人成网站777色婷婷| 久久伊人精品天天| 欧美一区二区三区艳史| 久久亚洲欧美日韩精品专区| 欧美成人一二三| 亚洲精品一二区| 超碰97人人做人人爱少妇|