JavaTM 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.textjava.util 패키지내의 로케일에 의존하는 팩토리 메소드나 이름 취득 메소드는, 프로바이더 인터페이스의 구현을 사용하는 것으로, Java 실행 환경 자체가 지원하는 일련의 로케일에 포함되지 않는 로케일을 지원합니다.  

로케일 의존 서비스 프로바이더 구현의 패키지화

이러한 로케일 의존 서비스의 구현은,Java 확장 기능 기구를 사용해 인스톨형 확장 기능으로서 패키지화됩니다. 각 프로바이더는, 자원 디렉토리 META-INF/services 내의 프로바이더 구성 파일을 사용해 프로바이더 자체를 식별합니다만, 그 때, 프로바이더 인터페이스의 완전 수식 클래스명을 파일명으로서 사용합니다. 이 파일에는, 구상 프로바이더 클래스의 완전 수식명이 1 행에 1 개씩 기술됩니다. 행의 끝은, 개행 ('\n'), 왕복대 리턴 ('\r'), 또는 왕복대 리턴의 직후에 개행이 계속되는 편성에 의해 나타내집니다. 각각의 이름을 둘러싸는 공백 문자와 탭 문자, 및 공백행은 무시됩니다. 코멘트 문자는 「#」(해시 기호)입니다. 각 행에서는, 최초의 코멘트 문자 이후의 문자는 모두 무시됩니다. 이 파일은, UTF-8 방식에서 encode 할 필요가 있습니다.  

특정의 구상 프로바이더 클래스가 복수의 구성 파일내, 또는 같은 구성 파일내에서 반복해 지정되고 있는 경우, 중복 한 지정은 무시됩니다. 특정의 프로바이더를 지정한 구성 파일을, 프로바이더 자체와 같은 JAR 파일 (또는 그 외의 배포 단위) 내에 포함할 필요는 없습니다. 이 프로바이더에는, 구성 파일의 검색시에 최초로 조회된 클래스 로더로부터 액세스 할 수 없으면 안됩니다. 덧붙여 그 클래스 로더는, 파일을 로드한 클래스 로더와 동일하다라고는 한정하지 않습니다.  

예를 들어,DateFormatProvider 클래스의 구현은, 다음의 파일을 포함한 JAR 파일의 형태를 취해야 합니다.

META-INF/services/java.text.spi.DateFormatProvider 
 
그리고, 파일 java.text.spi.DateFormatProvider 에는 다음과 같은 행이 포함되어 있어야 합니다.
com.foo.DateFormatProviderImpl
 
이것은,DateFormatProvider 을 구현하는 클래스의 완전 수식 클래스명입니다.

로케일 의존 서비스의 호출

java.textjava.util 패키지내의 로케일에 의존하는 팩토리 메소드나 이름 취득 메소드는, 서비스 프로바이더의 메소드를 필요에 따라서 호출하는 것으로, 요구된 로케일을 지원합니다. 그러한 메소드는 우선, Java 실행 환경 자체가 요구된 로케일을 지원할지 어떨지를 체크해, 지원가 사용 가능하면 그 지원를 사용합니다. 그 이외의 경우, 그것들은, 적절한 인터페이스의 인스톨이 끝난 프로바이더의 getAvailableLocales() 메소드를 호출하는 것으로, 요구된 로케일을 지원하는 프로바이더를 검색합니다. 그러한 프로바이더가 발견되었을 경우, 그 프로바이더의 그 외의 메소드가 불려 가 요구된 객체 또는 이름이 취득됩니다. Java 실행 환경 자체, 인스톨이 끝난 프로바이더의 어느쪽이나 요구된 로케일을 지원하지 않는 경우에는, 그 로케일의 변형 캐릭터 라인, 국문자열, 언어 캐릭터 라인 가운데, 공문자열이 아닌 최초의 것을 공문자열로 옮겨놓는 것으로 폴 백 로케일이 구축되어 검색 처리가 재개됩니다. 변형에 1 개 이상의 「_」이 포함되어 있는 경우에는, 그 변형을, 마지막 「_」이라고 거기에 계속되는 부분을 제거한 새로운 변형으로 옮겨놓는 것으로, 폴 백 로케일이 구축됩니다. 폴 백이 실행되는 경우에서도, 그 폴 백의 전에, 요구된 객체 또는 이름을 돌려주는 메소드가 원의 로케일을 지정해 불려 갑니다. 이 처리가 반드시 종료하기 위해서는, 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 Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.