JavaTM 2 Platform
Standard Ed. 6

java.util.spi
類別 LocaleServiceProvider

java.lang.Object
  繼承者 java.util.spi.LocaleServiceProvider
直接已知子類別:
BreakIteratorProvider, CollatorProvider, CurrencyNameProvider, DateFormatProvider, DateFormatSymbolsProvider, DecimalFormatSymbolsProvider, LocaleNameProvider, NumberFormatProvider, TimeZoneNameProvider

public abstract class LocaleServiceProvider
extends Object

此類別是所有與語言環境有關的服務提供者介面(SPI)的父級類別。

與語言環境有關的服務提供者介面是與 java.textjava.util 套件中與語言環境有關的類別相對應的介面。利用這些介面,可以建構與語言環境有關的物件,可以獲取這些套件的本地名稱。對於 Java 運行時環境本身支持的語言環境集以外的語言環境,java.textjava.util 套件中與語言環境有關的處理器方法以及獲取名稱的方法使用提供者介面的實作來提供支持。

打包與語言環境有關的服務提供者實作

使用 Java 擴展機制將這些與語言環境有關的服務的實作作為已安裝的擴展打套件。提供者使用資源目錄 META-INF/services 中的提供者配置檔案標識本身,使用完全限定的提供者介面類別名稱作為檔案名。該檔案應該套件含一個完全限定的具體提供者類別名稱列表,每行一個。通過下列字元之一表示某行已終止:換行 ('\n')、回車(Enter) ('\r')或回車(Enter)後緊跟換行。忽略各名稱周圍的空格、製表符和空行。註釋字元是 '#' ('#');每行的第一個註釋字元後面的所有字元都被忽略。檔案必須使用 UTF-8 編碼。

如果在多個配置檔案中指定了一個特定的具體提供者類別,或在同一配置檔案中多次被指定,則忽略重複的指定。指定特定提供者的配置檔案不必像提供者本身一樣位於同一個 jar 檔案或其他的分佈式單元中。提供者必須可從最初為了定位配置檔案而查詢的類別載入器存取,而不一定是載入檔案的類別載入器。

例如,DateFormatProvider 類別的實作應該採用包含以下檔案的 jar 檔案的形式:

META-INF/services/java.text.spi.DateFormatProvider 
 
檔案 java.text.spi.DateFormatProvider 應該具有如下的行:
com.foo.DateFormatProviderImpl
 
這是實作 DateFormatProvider 的類別的完全限定類別名稱。

調用與語言環境有關的服務

在需要支持請求的語言環境時,java.textjava.util 套件中與語言環境有關的處理器方法和獲取名稱的方法調用服務提供者方法。這些方法先檢查 Java 運行時環境本身是否支持請求的語言環境,如果是則使用它來支持。否則,這些方法對適當介面調用已安裝提供者的 getAvailableLocales() 方法,以尋找支持所請求語言環境的提供者。如果找到了這種提供者,則調用它的其他方法獲取請求的物件或名稱。如果 Java 運行時環境本身和已安裝的提供者都不支持所請求的語言環境,那麼使用空字元串替換語言環境的第一個非空(null)的變數、國家/地區或語言字元串,以此建構一個回退語言環境,然後重新啟動尋找進程。如果變數包含一個或多個 '_',則使用取消最後一個 '_' 及其後面部分的新變數替換該變數,以此建構一個回退語言環境。即使發生回退,返回所請求物件或名稱的方法仍然使用回退之前的原語言環境進行調用。為了保證此進程能夠終止,Java 運行時環境必須支持所有與語言環境有關的服務的根語言環境。

允許名稱提供者(但不是其他物件提供者)對某些名稱請求,甚至對它們聲稱支持的語言環境(將其包括在 getAvailableLocales 的返回值中)環境返回 null。類似地,Java 運行時環境本身可能沒有它所支持的所有語言環境的所有名稱。這是因為其名稱被請求的物件集可能很大,並可能隨時變化,所以並非總是可以完全包括它們。如果 Java 運行時環境或提供者返回 null 而非名稱,那麼將按上述過程執行尋找,就像該語言環境不受支持一樣。

從以下版本開始:
1.6

建構子摘要
protected LocaleServiceProvider()
          唯一的建構子。
 
方法摘要
abstract  Locale[] getAvailableLocales()
          返回一個陣列,它包含此語言環境服務提供者可以為其提供本地化物件或名稱的所有語言環境。
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

建構子詳細資訊

LocaleServiceProvider

protected LocaleServiceProvider()
唯一的建構子。(由子類別建構子調用,通常是隱式的)。

方法詳細資訊

getAvailableLocales

public abstract Locale[] getAvailableLocales()
返回一個陣列,它包含此語言環境服務提供者可以為其提供本地化物件或名稱的所有語言環境。

返回:
一個陣列,它包含此語言環境服務提供者可以為其提供本地化物件或名稱的所有語言環境。

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only