<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Ryan's Java world!

    something about Java and opensource!

    BlogJava 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
      51 Posts :: 25 Stories :: 59 Comments :: 0 Trackbacks

    在JDK 6 中, 利用其提供的service provider interfaces (SPI) 可以做到很好的國(guó)際化處理, 以前你只能使用標(biāo)準(zhǔn)的時(shí)區(qū)和各種符號(hào), 如果你所在的地區(qū)不幸不再這些標(biāo)志時(shí)區(qū)中, 或者貨幣符號(hào)也不在其中, 那么你就無(wú)能為力了, 現(xiàn)在有了JDK 6 ,我們可以自定義這些服務(wù)的提供者了.

    為了實(shí)現(xiàn)該功能, 在JDK 6中的java.util.spi 包中有個(gè)LocaleServiceProvider 類(lèi)( http://java.sun.com/javase/6/docs/api/java/util/spi/LocaleServiceProvider.html ), 該類(lèi)是提供該服務(wù)的基類(lèi).  在JDK 6中有幾個(gè)具體的服務(wù)實(shí)現(xiàn) ,分布在java.text.spi, 和java.util.spi包中, 分布規(guī)則為, 如果類(lèi)XXX在java.text包中, 則相應(yīng)的XXXProvider類(lèi)就在java.text.spi'包中. 對(duì)于java.util也一樣.,

    在java.text.spi 中有如下幾個(gè)類(lèi):
    BreakIteratorProvider  CollatorProvider  DateFormatProvider
    DateFormatSymbolsProvider
    DecimalFormatSymbolsProvider
    NumberFormatProvider

    在java.util.spi中有如下幾個(gè)類(lèi);

    CurrencyNameProvider LocaleNameProvider TimeZoneNameProvider

    下面來(lái)看一個(gè)自定義服務(wù)的例子:

    那自定義時(shí)區(qū)名來(lái)舉例, 實(shí)現(xiàn)類(lèi)如下:

    package cn.hexiao.revealed;

    import java.util.*;
    import java.util.spi.*;

    public class MyTimeZoneNameProvider extends TimeZoneNameProvider {
      public String getDisplayName(String ID, boolean daylight,int style, Locale locale) {
        System.out.println("ID: " + ID);
        return ID;
      }
      public Locale[] getAvailableLocales() {
        return new Locale[] {Locale.US};
      }
    }

     

    只是在返回ID前,打印該ID. 繼承TimeZoneNameProvider 類(lèi), 你必須要實(shí)現(xiàn) public Locale[] getAvailableLocales()  方法, 來(lái)指定可用的Locale.

    getDisplayName函數(shù)取決于你提供的服務(wù).

    只是提供這么一個(gè)類(lèi),還不可以, 你還要把它打包為jar文件, 在該包的根目錄下面還要有一個(gè)META-INF目錄, 該目錄下面還要有個(gè)services目錄, 在services目錄下面有一個(gè)以java.util.spi.TimeZoneNameProvider 命名(所提供服務(wù)的全限定類(lèi)名)的文件,該文件的內(nèi)容為 cn.hexiao.revealed.MyTimeZoneNameProvider(服務(wù)提供者的全限定類(lèi)名). 然后使用

    jar cvf Zones.jar META-INF/* cn/* 命令打包,

    把打包后的文件放到j(luò)re的 lib/ext 目錄下. (如果你使用JDK的jar允許程序,就要放到JDK目錄下的jre目錄中的lib/ext目錄下).

    下面來(lái)完成一個(gè)測(cè)試程序, 看看效果:

    import java.util.*;
    public class Zones {
      public static void main(String args[]) {
        TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
        System.out.println(tz.getDisplayName(Locale.US));
        System.out.println(tz.getDisplayName(Locale.UK));
      }
    }

    允許該程序, 可以看到如下結(jié)果,

    G:\JDK6>java Zones
    ID: America/Los_Angeles
    ID: America/Los_Angeles
    ID: America/Los_Angeles
    ID: America/Los_Angeles
    America/Los_Angeles
    Pacific Standard Time

    JSF中午論壇: http://www.hexiao.cn/jsf/index.php 

    我們提供的自定義服務(wù)生效了, ^_^, Enjoy It ! 

    posted on 2007-04-20 12:50 冰雨 閱讀(1388) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Java

    JSF中文技術(shù)文摘
    主站蜘蛛池模板: 亚洲国产综合专区电影在线| 亚洲日本中文字幕区| 免费国产va视频永久在线观看| 成年人在线免费看视频| wwwxxx亚洲| 国产免费不卡v片在线观看| 亚洲国产成人精品无码一区二区 | 亚洲午夜成人精品电影在线观看| 亚洲综合在线一区二区三区 | 久久精品国产亚洲夜色AV网站| 成人av片无码免费天天看| 红杏亚洲影院一区二区三区| 一区二区三区免费电影| 久久久久国产亚洲AV麻豆| aaa毛片免费观看| 亚洲日韩小电影在线观看| 91视频免费观看| 亚洲av永久无码精品古装片| 日本xxxx色视频在线观看免费| 久久丫精品国产亚洲av| 国产h肉在线视频免费观看| 亚洲最大成人网色香蕉| 成人午夜性A级毛片免费| 九九精品国产亚洲AV日韩| 久久精品国产亚洲AV大全| 黄网站色视频免费看无下截| 亚洲第一区在线观看| 中文毛片无遮挡高清免费| 亚洲V无码一区二区三区四区观看 亚洲αv久久久噜噜噜噜噜 | 四虎免费影院ww4164h| 国产成人精品日本亚洲11| 在线观看无码的免费网站| 亚洲av第一网站久章草| 亚洲日韩国产精品乱| 免费看无码特级毛片| 久久久无码精品亚洲日韩京东传媒| av免费不卡国产观看| 亚洲精品成a人在线观看夫| 亚洲成a人片在线观看国产| a级黄色毛片免费播放视频| 久久综合亚洲鲁鲁五月天|