JavaTM Platform
Standard Ed. 6

java.text
클래스 MessageFormat

java.lang.Object 
  상위를 확장 java.text.Format 
      상위를 확장 java.text.MessageFormat
모든 구현된 인터페이스:
Serializable , Cloneable


public class MessageFormat
extends Format

MessageFormat 는, 연결된 메세지를, 언어에 의존하지 않는 방법으로 구축하기 위한의 것입니다. 최종 사용자용으로 표시하는 메세지는, 이 방법으로 구축해 주세요.

MessageFormat 는, 1 조의 객체를 포맷 해, 포맷 한 캐릭터 라인을 패턴의 적절한 장소에 삽입합니다.

주: MessageFormat 가 다른 Format 클래스와 다른 점은,MessageFormat 객체를 (getInstance 스타일의 팩토리 메소드는 아니고) 그 생성자 의 1 개로 작성한다고 하는 것입니다. MessageFormat 에서는, 로케일 고유의 동작은 구현되어 있지 않기 때문에, 팩토리 메소드는 필요 없습니다. 로케일 고유의 동작은, 제공하는 패턴 및 삽입된 인수에 사용하는 서브 포맷에 의해 정의됩니다.

패턴과 그 해석

MessageFormat 는 다음의 패턴을 사용합니다.
 MessageFormatPattern:
         String
         MessageFormatPattern FormatElement String

 FormatElement:
         { ArgumentIndex }
         { ArgumentIndex , FormatType }
         { ArgumentIndex , FormatType , FormatStyle }

 FormatType: one of 
         number date time choice

 FormatStyle:
         short
         medium
         long
         full
         integer
         currency
         percent
         SubformatPattern

 String:
         StringPartopt
         String StringPart

 StringPart:
         ''
         ' QuotedString '
         UnquotedString

 SubformatPattern:
         SubformatPatternPartopt
         SubformatPattern SubformatPatternPart

 SubFormatPatternPart:
         ' QuotedPattern '
         UnquotedPattern
 

String 내에서는, 「''」는 단일 인용부호를 나타냅니다. QuotedString 는 단일 인용부호를 제외한 임의의 문자를 포함합니다. 둘러싸고 있는 단일 인용부호는 삭제됩니다. UnquotedString 는, 단일 인용부호와 왼쪽대괄호를 제외한 임의의 문자를 포함합니다. 따라서, 포맷 된 메세지로 「'{0}'」가 되는 캐릭터 라인은, 「'''{'0}''」또는 「'''{0}'''」(이)라고 기술합니다.  

SubformatPattern 내에서는 다른 룰이 적용됩니다. QuotedPattern 는 단일 인용부호 이외의 임의의 문자를 포함합니다만, 둘러싸고 있는 단일 인용부호는 삭제되지 않습니다. 이 때문에 단일 인용부호는 서브 포맷에 의해 해석됩니다. 예를 들어, 「{1, number,$'#',##}」(이)라고 지정하면(자), 해시 기호 (#)가 붙은 수치 포맷이 생성됩니다. 결과는, 「$#31, 45」와 같이 됩니다. "$#31, 45". UnquotedPattern 는, 단일 인용부호 이외의 임의의 문자를 포함합니다만, 그 중안괄호는 페어가 되어 있을 필요가 있습니다. 예를 들어, 「ab {0} de」와「ab '}' de」는 유효한 서브 포맷 패턴입니다만, 「ab {0'}' de」와「ab } de」는 무효입니다.  

경고:
메세지 포맷 패턴내에서의 인용부호의 사용 규칙은, 별로 명쾌하지는 않습니다. 특히, 단일 인용부호를 쌍꺼풀 수술을 할 필요의 유무가 로컬라이저에 있어서는 분명하지 않은 것도 있습니다. 로컬라이저에 규칙에 대해 정보를 제공해, 자원에 번들 되는 원시 파일내의 코멘트등에 의해, 어느 캐릭터 라인이 MessageFormat 로 처리되는지를 나타내도록 해 주세요. 로컬라이저는, 변환한 캐릭터 라인으로 오리지날의 버젼에는 없는 단일 인용부호를 사용해야 하는 경우가 있습니다.

ArgumentIndex 치는, 숫자 0 ~ 9 를 사용해 기술한 0 이상의 정수입니다. format 메소드에게 건네진 arguments 배열 또는 parse 메소드에 의해 반환된 결과의 배열의 인덱스를 나타냅니다.  

FormatTypeFormatStyle 치는, 포맷 요소의 Format 인스턴스의 생성에 사용합니다. 다음의 겉(표)에, Format 인스턴스에의 값의 맵에 대해 가리킵니다. 겉(표)에 없는 편성은 사용할 수 없습니다. SubformatPattern 는, 사용하는 Format 서브 클래스에 대해서 유효한 패턴 캐릭터 라인이 아니면 안됩니다.  

포맷형 포맷 스타일 생성되는 서브 포맷
(없음) (없음) null
number (없음) NumberFormat.getInstance(getLocale())
integer NumberFormat.getIntegerInstance(getLocale())
currency NumberFormat.getCurrencyInstance(getLocale())
percent NumberFormat.getPercentInstance(getLocale())
SubformatPattern new DecimalFormat(subformatPattern, DecimalFormatSymbols.getInstance(getLocale()))
date (없음) DateFormat.getDateInstance(DateFormat.DEFAULT, getLocale())
short DateFormat.getDateInstance(DateFormat.SHORT, getLocale())
medium DateFormat.getDateInstance(DateFormat.DEFAULT, getLocale())
long DateFormat.getDateInstance(DateFormat.LONG, getLocale())
full DateFormat.getDateInstance(DateFormat.FULL, getLocale())
SubformatPattern new SimpleDateFormat(subformatPattern, getLocale())
time (없음) DateFormat.getTimeInstance(DateFormat.DEFAULT, getLocale())
short DateFormat.getTimeInstance(DateFormat.SHORT, getLocale())
medium DateFormat.getTimeInstance(DateFormat.DEFAULT, getLocale())
long DateFormat.getTimeInstance(DateFormat.LONG, getLocale())
full DateFormat.getTimeInstance(DateFormat.FULL, getLocale())
SubformatPattern new SimpleDateFormat(subformatPattern, getLocale())
choice SubformatPattern new ChoiceFormat(subformatPattern)

사용예

다음에 몇개의 사용예를 나타냅니다. 물론 실제의 국제화 된 프로그램에서는, 메세지 포맷 패턴이나 그 외의 정적인 캐릭터 라인은 자원 번들로부터 취득됩니다. 그 외의 파라미터는 실행시에 동적으로 결정됩니다.  

최초의 예에서는, static 메소드 MessageFormat.format 를 사용하고 있습니다. 이 메소드는 내부적으로, 1 번 한정의 사용 목적으로 MessageFormat 인스턴스를 작성합니다.

 int planet = 7;
 String event = "a disturbance in the Force";

 String result = MessageFormat.format(
     "At {1, time} on {1, date}, there was {2} on planet {0, number, integer}. ",
     planet, new Date(), event);
 
출력 결과는 다음과 같이 됩니다.
 At 12:30 PM on Jul 3, 2053, there was a disturbance in the Force on planet 7.
 

다음의 예에서는, 반복 사용 가능한 MessageFormat 인스턴스를 작성합니다.

 int fileCount = 1273;
 String diskName = "MyDisk";
 Object[] testArgs = {new Long(fileCount), diskName};

 MessageFormat form = new MessageFormat(
     "The disk \"{1}\" contains {0} file(s). ");

 System.out.println(form.format(testArgs));
 
fileCount 에 다양한 값을 설정했을 경우의 출력 결과를 다음에 나타냅니다.
 The disk "MyDisk" contains 0 file(s).
 The disk "MyDisk" contains 1 file(s).
 The disk "MyDisk" contains 1,273 file(s).
 

보다 고도의 패턴을 실현하고 싶다면,ChoiceFormat 를 사용하는 것으로, 단수와 복수에 대해서 각각 적절한 형식을 생성할 수 있습니다.

 MessageFormat form = new MessageFormat("The disk \"{1}\" contains {0}. ");
 double[] filelimits = {0,1,2};
 String[] filepart = {"no files","one file","{0, number} files"};
 ChoiceFormat fileform = new ChoiceFormat(filelimits, filepart);
 form.setFormatByArgumentIndex(0, fileform);

 int fileCount = 1273;
 String diskName = "MyDisk";
 Object[] testArgs = {new Long(fileCount), diskName};

 System.out.println(form.format(testArgs));
 
fileCount 에 다양한 값을 설정했을 경우의 출력 결과를 다음에 나타냅니다.
 The disk "MyDisk" contains no files.
 The disk "MyDisk" contains one file.
 The disk "MyDisk" contains 1,273 files.
 

위의 예의 같게 ChoiceFormat 를 프로그램적으로 작성할 수 있습니다만, 다음과 같이 패턴을 사용할 수도 있습니다. 자세한 것은 ChoiceFormat 를 참조해 주세요.

 form.applyPattern(
    "There {0, choice, 0#are no files|1#is one file|1<are {0, number, integer} files}. ");
 

주: 상기로부터 알도록(듯이),MessageFormatChoiceFormat 에 의해 생성되는 캐릭터 라인의 취급은 꽤 특수합니다. 「{」의 존재에 의해 서브 포맷인 것을 나타내, 재귀 처리를 행하고 있습니다. MessageFormat 와 ChoiceFormat 를 양쪽 모두 (캐릭터 라인 패턴으로서가 아니게) 프로그램적으로 작성하는 경우에는, 재귀적으로 반복하는 포맷을 작성해 영구 루프에 빠지지 않게 주의해 주세요.  

1 개의 인수가 캐릭터 라인내에서 여러 차례 해석되면(자), 마지막에 일치하는 것이 해석의 최종 결과가 됩니다. 다음에 예를 나타냅니다.

 MessageFormat mf = new MessageFormat("{0, number,#. ##}, {0, number,#. #}");
 Object[] objs = {new Double(3.1415)};
 String result = mf.format( objs );
 // result now equals "3.14, 3.1"
 objs = null;
 objs = mf.parse(result, new ParsePosition(0));
 // objs now equals {new Double(3.1)}
 

같이 같은 인수가 여러 차례 나오는 패턴을 사용해 MessageFormat 객체를 해석하면(자), 마지막에 일치하는 것이 돌려주어집니다. 다음에 예를 나타냅니다.

 MessageFormat mf = new MessageFormat("{0}, {0}, {0}");
 String forParsing = "x, y, z";
 Object[] objs = mf.parse(forParsing, new ParsePosition(0));
 // result now equals {new String("z")}
 

동기

메세지 포맷은 동기화 되지 않습니다. thread 마다 다른 포맷 인스턴스를 작성하는 것을 추천합니다. 복수의 thread가 포맷에 동시에 액세스 하는 경우는, 외부적으로 동기화할 필요가 있습니다.

관련 항목:
Locale , Format , NumberFormat , DecimalFormat , ChoiceFormat , 직렬화 된 형식

상자의 클래스의 개요
static class MessageFormat.Field
          MessageFormat.formatToCharacterIterator 로부터 반환된 AttributedCharacterIterator 내의 속성 키로서 사용하는 정수를 정의합니다.
 
생성자 의 개요
MessageFormat (String  pattern)
          디폴트 로케일과 지정된 패턴을 위한 MessageFormat 를 구축합니다.
MessageFormat (String  pattern, Locale  locale)
          지정된 로케일과 패턴을 위한 MessageFormat 를 구축합니다.
 
메소드의 개요
 void applyPattern (String  pattern)
          이 메세지 포맷에 의해 사용되는 패턴을 설정합니다.
 Object clone ()
          이 객체의 카피를 작성해, 돌려줍니다.
 boolean equals (Object  obj)
          2 개의 메세지 포맷 객체의 사이의 등호 비교입니다.
 StringBuffer format (Object [] arguments, StringBuffer  result, FieldPosition  pos)
          객체의 배열을 포맷 해, 제공된 StringBuffer 에, 포맷 요소를 포맷 된 객체에 의해 옮겨놓아 MessageFormat 의 패턴을 추가합니다.
 StringBuffer format (Object  arguments, StringBuffer  result, FieldPosition  pos)
          객체의 배열을 포맷 해, 제공된 StringBuffer 에, 포맷 요소를 포맷 된 객체에 의해 옮겨놓아 MessageFormat 의 패턴을 추가합니다.
static String format (String  pattern, Object ... arguments)
          지정된 패턴을 사용해 MessageFormat 를 작성해, 그것을 사용해 지정된 인수를 포맷 합니다.
 AttributedCharacterIterator formatToCharacterIterator (Object  arguments)
          객체의 배열을 포맷 해, 그것을 MessageFormat 의 패턴에 삽입해,AttributedCharacterIterator 를 생성합니다.
 Format [] getFormats ()
          미리 설정된 패턴 캐릭터 라인내의 포맷 요소에 사용되는 포맷을 가져옵니다.
 Format [] getFormatsByArgumentIndex ()
          format 메소드에게 건네지는 값 또는 parse 메소드로부터 반환된 값에 사용되는 포맷을 가져옵니다.
 Locale getLocale ()
          서브 포맷을 작성 또는 비교하는 경우에 사용되는 로케일을 가져옵니다.
 int hashCode ()
          메세지 포맷 객체의 해시 코드를 생성합니다.
 Object [] parse (String  source)
          지정된 캐릭터 라인의 선두로부터 텍스트를 해석해 객체 배열을 생성합니다.
 Object [] parse (String  source, ParsePosition  pos)
          캐릭터 라인을 해석합니다.
 Object parseObject (String  source, ParsePosition  pos)
          캐릭터 라인으로부터 텍스트를 해석해 객체 배열을 생성합니다.
 void setFormat (int formatElementIndex, Format  newFormat)
          미리 설정된 패턴 캐릭터 라인내의 지정된 포맷 요소 인덱스로, 포맷 요소에 사용하는 포맷을 설정합니다.
 void setFormatByArgumentIndex (int argumentIndex, Format  newFormat)
          지정된 인수 인덱스를 사용한다, 미리 설정된 패턴 캐릭터 라인내의 포맷 요소에 사용하는 포맷을 설정합니다.
 void setFormats (Format [] newFormats)
          미리 설정된 패턴 캐릭터 라인내의 포맷 요소에 사용하는 포맷을 설정합니다.
 void setFormatsByArgumentIndex (Format [] newFormats)
          format 메소드에게 건네지는 값 또는 parse 메소드로부터 반환된 값에 사용하는 포맷을 설정합니다.
 void setLocale (Locale  locale)
          서브 포맷을 작성 또는 비교하는 경우에 사용하는 로케일을 설정합니다.
 String toPattern ()
          메세지 포맷의 현재 상태를 나타내는 패턴을 돌려줍니다.
 
클래스 java.text. Format 로부터 상속된 메소드
format , parseObject
 
클래스 java.lang. Object 로부터 상속된 메소드
finalize , getClass , notify , notifyAll , toString , wait , wait , wait
 

생성자 의 상세

MessageFormat

public MessageFormat(String  pattern)
디폴트 로케일과 지정된 패턴을 위한 MessageFormat 를 구축합니다. 생성자 은 로케일을 설정하고 나서 패턴을 해석해, 포함되어 있는 포맷 요소에 대해 서브 포맷의 리스트를 작성합니다. 패턴과 그 해석은클래스의 개요로 지정되고 있습니다.

파라미터:
pattern - 이 메세지 포맷을 위한 패턴
예외:
IllegalArgumentException - 패턴이 무효인 경우

MessageFormat

public MessageFormat(String  pattern,
                     Locale  locale)
지정된 로케일과 패턴을 위한 MessageFormat 를 구축합니다. 생성자 은 로케일을 설정하고 나서 패턴을 해석해, 포함되어 있는 포맷 요소에 대해 서브 포맷의 리스트를 작성합니다. 패턴과 그 해석은클래스의 개요로 지정되고 있습니다.

파라미터:
pattern - 이 메세지 포맷을 위한 패턴
locale - 이 메세지 포맷을 위한 로케일
예외:
IllegalArgumentException - 패턴이 무효인 경우
도입된 버젼:
1.4
메소드의 상세

setLocale

public void setLocale(Locale  locale)
서브 포맷을 작성 또는 비교하는 경우에 사용하는 로케일을 설정합니다. 이것은, 후에 행해지는 다음과 같은 메소드에의 호출에 영향을 줍니다. 벌써 작성되고 있는 서브 포맷은 영향을 받지 않습니다.

파라미터:
locale - 서브 포맷을 작성 또는 비교하는 경우에 사용하는 로케일

getLocale

public Locale  getLocale()
서브 포맷을 작성 또는 비교하는 경우에 사용되는 로케일을 가져옵니다.

반환값:
서브 포맷을 작성 또는 비교하는 경우에 사용되는 로케일

applyPattern

public void applyPattern(String  pattern)
이 메세지 포맷에 의해 사용되는 패턴을 설정합니다. 메소드는 패턴을 해석해, 포함되어 있는 포맷 요소에 대해 서브 포맷의 리스트를 작성합니다. 패턴과 그 해석은클래스의 개요로 지정되고 있습니다.

파라미터:
pattern - 이 메세지 포맷을 위한 패턴
예외:
IllegalArgumentException - 패턴이 무효인 경우

toPattern

public String  toPattern()
메세지 포맷의 현재 상태를 나타내는 패턴을 돌려줍니다. 캐릭터 라인은 내부 정보로부터 구축되므로, 이전에 적용된 패턴과 동일해진다고는 할 수 없습니다.

반환값:
메세지 포맷의 현재 상태를 나타내는 패턴

setFormatsByArgumentIndex

public void setFormatsByArgumentIndex(Format [] newFormats)
format 메소드에게 건네지는 값 또는 parse 메소드로부터 반환된 값에 사용하는 포맷을 설정합니다. newFormats 내의 요소의 인덱스는, 미리 설정된 패턴 캐릭터 라인으로 사용되는 인수 인덱스에 대응합니다. 따라서,newFormats 내의 포맷의 순서는 format 메소드에게 건네진 arguments 배열 또는 parse 메소드에 의해 반환된 결과의 배열내의 요소의 순서에 대응합니다.  

인수 인덱스가 패턴 캐릭터 라인내에서 복수의 포맷 요소에 사용되는 경우, 대응하는 새로운 포맷이 그 모든 포맷 요소에 사용됩니다. 인수 인덱스가 캐릭터 라인내에서 어느 포맷 요소에도 사용되지 않는 경우는, 대응하는 새로운 포맷은 무시됩니다. 제공된 포맷이 필요수에 못 미친 경우,newFormats.length 보다 적은 인수 인덱스에 대한 포맷만이 옮겨놓을 수 있습니다.

파라미터:
newFormats - 사용하는 새로운 포맷
예외:
NullPointerException - newFormats 가 null 의 경우
도입된 버젼:
1.4

setFormats

public void setFormats(Format [] newFormats)
미리 설정된 패턴 캐릭터 라인내의 포맷 요소에 사용하는 포맷을 설정합니다. newFormats 내의 포맷의 순서는, 패턴 캐릭터 라인내의 포맷 요소의 순서에 대응합니다.  

패턴 캐릭터 라인으로 필요로 하는 것보다도 많은 포맷이 제공되었을 경우, 남은 포맷은 무시됩니다. 필요수에 못 미친 경우는, 최초의 newFormats.length 만이 옮겨놓을 수 있습니다.  

패턴 캐릭터 라인내의 포맷 요소의 순서는 지역 대응화의 처리 과정에서 변경되는 것이 많기 때문에, 일반적으로은 setFormatsByArgumentIndex 메소드를 사용하는 편이 효율적입니다. 이 메소드는, 포맷의 순서를 format 메소드에게 건네진 arguments 배열 또는 parse 메소드에 의해 반환된 결과의 배열내의 요소의 순서에 대응하는 것이라고 봅니다.

파라미터:
newFormats - 사용하는 새로운 포맷
예외:
NullPointerException - newFormats 가 null 의 경우

setFormatByArgumentIndex

public void setFormatByArgumentIndex(int argumentIndex,
                                     Format  newFormat)
지정된 인수 인덱스를 사용한다, 미리 설정된 패턴 캐릭터 라인내의 포맷 요소에 사용하는 포맷을 설정합니다. 인수 인덱스는 포맷 요소 정의의 부분에서,format 메소드에게 건네진 arguments 배열 또는 parse 메소드에 의해 반환된 결과의 배열의 인덱스를 나타냅니다.  

인수 인덱스가 패턴 캐릭터 라인내에서 복수의 포맷 요소에 사용되는 경우, 새로운 포맷이 그 모든 포맷 요소에 사용됩니다. 인수 인덱스가 캐릭터 라인내에서 어느 포맷 요소에도 사용되지 않는 경우는, 새로운 포맷은 무시됩니다.

파라미터:
argumentIndex - 새로운 포맷에 사용하기 위한 인수 인덱스
newFormat - 사용하는 새로운 포맷
도입된 버젼:
1.4

setFormat

public void setFormat(int formatElementIndex,
                      Format  newFormat)
미리 설정된 패턴 캐릭터 라인내의 지정된 포맷 요소 인덱스로, 포맷 요소에 사용하는 포맷을 설정합니다. 포맷 요소 인덱스는, 패턴 캐릭터 라인의 선두로부터 카운트 한, 포맷 요소의 제로로부터 시작되는 숫자입니다.  

패턴 캐릭터 라인내의 포맷 요소의 순서는, 지역 대응화의 처리 과정에서 변경되는 것이 많기 때문에, 일반적으로은 setFormatByArgumentIndex 메소드를 사용하는 편이 효율적입니다. 이 메소드는, 포맷 요소가 지정하는 인수 인덱스를 기본으로, 포맷 요소에 액세스 합니다.

파라미터:
formatElementIndex - 패턴내의 포맷 요소의 인덱스
newFormat - 지정된 포맷 요소에 사용하는 포맷
예외:
ArrayIndexOutOfBoundsException - formatElementIndex 가, 패턴 캐릭터 라인내의 포맷 요소의 수이상의 경우

getFormatsByArgumentIndex

public Format [] getFormatsByArgumentIndex()
format 메소드에게 건네지는 값 또는 parse 메소드로부터 반환된 값에 사용되는 포맷을 가져옵니다. 반환된 배열내의 요소의 인덱스는, 미리 설정된 패턴 캐릭터 라인으로 사용되는 인수 인덱스에 대응합니다. 따라서, 반환된 배열내의 포맷의 순서는,format 메소드에게 건네진 arguments 배열 또는 parse 메소드에 의해 반환된 결과의 배열내의 요소의 순서에 대응합니다.  

인수 인덱스가 패턴 캐릭터 라인내에서 복수의 포맷 요소에 사용되는 경우, 그 마지막 포맷 요소로 사용되는 포맷이 배열에 돌려주어집니다. 인수 인덱스가 캐릭터 라인내에서 어느 포맷 요소에도 사용되지 않는 경우는, null 가 배열에 돌려주어집니다.

반환값:
패턴내의 인수에 사용되는 포맷
도입된 버젼:
1.4

getFormats

public Format [] getFormats()
미리 설정된 패턴 캐릭터 라인내의 포맷 요소에 사용되는 포맷을 가져옵니다. 반환되는 배열내의 포맷의 순서는, 패턴 캐릭터 라인내의 포맷 요소의 순서에 대응합니다.  

패턴 캐릭터 라인내의 포맷 요소의 순서는 지역 대응화의 처리 과정에서 변경되는 것이 많기 때문에, 일반적으로은 getFormatsByArgumentIndex 메소드를 사용하는 편이 효율적입니다. 이 메소드는, 포맷의 순서를 format 메소드에게 건네진 arguments 배열 또는 parse 메소드에 의해 반환된 결과의 배열내의 요소의 순서에 대응하는 것이라고 봅니다.

반환값:
패턴내의 포맷 요소에 사용되는 포맷

format

public final StringBuffer  format(Object [] arguments,
                                 StringBuffer  result,
                                 FieldPosition  pos)
객체의 배열을 포맷 해, 제공된 StringBuffer 에, 포맷 요소를 포맷 된 객체에 의해 옮겨놓아 MessageFormat 의 패턴을 추가합니다.  

개개의 포맷 요소에 치환된 텍스트는, 다음의 겉(표)의 최초로 일치하는 행으로 나타나도록(듯이), 포맷 요소의 현재의 서브 포맷과 포맷 요소의 인수 인덱스에 있는 arguments 요소로부터 얻을 수 있습니다. 인수는,argumentsnull인지, 또는 요소의 수가 argumentIndex+1 개보다 적은 경우, 사용 불가입니다.  

서브 포맷 인수 포맷 된 텍스트
임의 사용 불가 "{" + argumentIndex + "}"
임의 null "null"
instanceof ChoiceFormat 임의 subformat.format(argument). indexOf('{') >= 0 ?
(new MessageFormat(subformat.format(argument), getLocale())). format(argument) :subformat.format(argument)
! = null 임의 subformat.format(argument)
null instanceof Number NumberFormat.getInstance(getLocale()). format(argument)
null instanceof Date DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, getLocale()). format(argument)
null instanceof String argument
null 임의 argument.toString()

pos 가 null 가 아니고, 한편 Field.ARGUMENT 를 참조하고 있는 경우, 최초의 포맷 된 캐릭터 라인의 위치가 돌려주어집니다.

파라미터:
arguments - 포맷 하든가 또는 옮겨놓는 객체로부터 되는 배열
result - 텍스트가 추가되는 위치
pos - 입력으로는, 필요하면 위치 맞춤 필드. 출력으로는, 그 위치 맞춤 필드의 오프셋(offset)
예외:
IllegalArgumentException - arguments 배열내의 인수가, 그것을 사용하는 포맷 요소에 의해 예측된 형태가 아닌 경우

format

public static String  format(String  pattern,
                            Object ... arguments)
지정된 패턴을 사용해 MessageFormat 를 작성해, 그것을 사용해 지정된 인수를 포맷 합니다. 이것은 이하의 기술과 동등합니다.
(new MessageFormat (pattern)). format (arguments, new StringBuffer(), null). toString()

예외:
IllegalArgumentException - 패턴이 무효인 경우, 또는 arguments 배열내의 인수가, 그것을 사용하는 포맷 요소에 의해 예측된 형태가 아니다 경우

format

public final StringBuffer  format(Object  arguments,
                                 StringBuffer  result,
                                 FieldPosition  pos)
객체의 배열을 포맷 해, 제공된 StringBuffer 에, 포맷 요소를 포맷 된 객체에 의해 옮겨놓아 MessageFormat 의 패턴을 추가합니다. 이것은 이하의 기술과 동등합니다.
format ((Object[]) arguments, result, pos)

정의:
클래스 Format 내의 format
파라미터:
arguments - 포맷 하든가 또는 옮겨놓는 객체로부터 되는 배열
result - 텍스트가 추가되는 위치
pos - 입력으로는, 필요하면 위치 맞춤 필드. 출력으로는, 그 위치 맞춤 필드의 오프셋(offset)
반환값:
toAppendTo 로서 건네받는 캐릭터 라인 버퍼. 포맷 된 텍스트가 추가된다
예외:
IllegalArgumentException - arguments 배열내의 인수가, 그것을 사용하는 포맷 요소에 의해 예측된 형태가 아닌 경우

formatToCharacterIterator

public AttributedCharacterIterator  formatToCharacterIterator(Object  arguments)
객체의 배열을 포맷 해, 그것을 MessageFormat 의 패턴에 삽입해,AttributedCharacterIterator 를 생성합니다. 반환된 AttributedCharacterIterator 를 사용하면(자), 결과의 String 를 구축할 수 있는 것과 동시에, 결과의 String 에 대한 정보를 판정할 수 있습니다.  

반환된 AttributedCharacterIterator 의 텍스트는, 이하의 기술에 의해 반환되는 텍스트와 동일합니다.

format (arguments, new StringBuffer(), null). toString()

게다가AttributedCharacterIterator 는, 적어도 arguments 배열내의 인수로부터 텍스트가 생성된 위치를 나타내는 속성을 포함합니다. 이러한 속성의 키는 MessageFormat.Field 형입니다. 속성의 값은, 텍스트가 생성된 인수의 arguments 배열내의 인덱스를 나타내는 Integer 객체입니다.  

MessageFormat 가 사용하는 기본의 Format 인스턴스로부터의 속성/치도, 결과의 AttributedCharacterIterator 에 배치됩니다. 이것에 의해, 결과의 String 내의 인수의 위치를 알 수 있을 뿐만 아니라, 그 인수가 어느 필드에 포함되어 있을지도 압니다.

오버라이드(override):
클래스 Format 내의 formatToCharacterIterator
파라미터:
arguments - 포맷 하든가 또는 옮겨놓는 객체로부터 되는 배열
반환값:
포맷 된 값을 설명하는 AttributedCharacterIterator
예외:
NullPointerException - argumentsnull 의 경우
IllegalArgumentException - arguments 배열내의 인수가, 그것을 사용하는 포맷 요소에 의해 예측된 형태가 아닌 경우
도입된 버젼:
1.4

parse

public Object [] parse(String  source,
                      ParsePosition  pos)
캐릭터 라인을 해석합니다.

주의:해석은 다양한 원인을 위해서(때문에), 잘 동작하지 않는 것이 있습니다. 다음에 예를 나타냅니다.

해석이 실패했을 때는, ParsePosition.getErrorIndex()를 사용해, 캐릭터 라인의 어디서 해석이 실패했는지를 조사합니다. 반환되는 에러 인덱스는, 캐릭터 라인의 비교 대상인 서브 패턴의 개시 오프셋(offset)입니다. 예를 들어, 해석 캐릭터 라인 「AAA {0} BBB」가 패턴 「AAD {0} BBB」라고 비교되고 있는 경우, 에러 인덱스는 0 입니다. 에러가 발생하면(자), 이 메소드에의 호출이 null 를 돌려줍니다. 소스가 null 의 경우, 빈 상태(empty)의 배열을 돌려줍니다.


parse

public Object [] parse(String  source)
               throws ParseException 
지정된 캐릭터 라인의 선두로부터 텍스트를 해석해 객체 배열을 생성합니다. 메소드는 지정된 캐릭터 라인의 텍스트 전체에 사용되지 않는 경우도 있습니다.  

메세지의 해석에 대한 자세한 것은,parse(String, ParsePosition) 메소드를 참조해 주세요.

파라미터:
source - 선두가 해석되는 String
반환값:
캐릭터 라인으로부터 해석되는 Object 배열
예외:
ParseException - 지정된 캐릭터 라인의 선두가 해석할 수 없는 경우

parseObject

public Object  parseObject(String  source,
                          ParsePosition  pos)
캐릭터 라인으로부터 텍스트를 해석해 객체 배열을 생성합니다.  

메소드는 pos 에 의해 지정된 인덱스를 개시 위치로서 텍스트의 해석을 시도합니다. 해석이 완료하면(자),pos 의 인덱스는, 사용된 마지막 문자 (해석에서는, 캐릭터 라인의 끝까지의 모든 문자가 사용된다고는 할 수 없다)의 뒤의 인덱스에 갱신되어 해석된 객체 배열이 돌려주어집니다. 갱신된 pos 는, 이 메소드의 다음의 호출의 개시점을 나타내는데 사용할 수 있습니다. 에러가 발생했을 경우는,pos 의 인덱스는 변경되지 않고, 에러가 발생한 문자의 인덱스에 pos 의 에러 인덱스가 설정되어 null 가 돌려주어집니다.  

메세지의 해석에 대한 자세한 것은,parse(String, ParsePosition) 메소드를 참조해 주세요.

정의:
클래스 Format 내의 parseObject
파라미터:
source - 부분적으로 해석되는 String
pos - 상기의 인덱스 및 에러 인덱스 정보를 가진다 ParsePosition 객체
반환값:
캐릭터 라인으로부터 해석되는 Object 배열 에러의 경우는 null 를 돌려준다
예외:
NullPointerException - pos 가 null 의 경우

clone

public Object  clone()
이 객체의 카피를 작성해, 돌려줍니다.

오버라이드(override):
클래스 Format 내의 clone
반환값:
이 인스턴스의 복제
관련 항목:
Cloneable

equals

public boolean equals(Object  obj)
2 개의 메세지 포맷 객체의 사이의 등호 비교입니다.

오버라이드(override):
클래스 Object 내의 equals
파라미터:
obj - 비교 대상의 참조 객체
반환값:
obj 인수로 지정된 객체와 이 객체가 동일한 경우는 true, 그렇지 않은 경우는 false
관련 항목:
Object.hashCode() , Hashtable

hashCode

public int hashCode()
메세지 포맷 객체의 해시 코드를 생성합니다.

오버라이드(override):
클래스 Object 내의 hashCode
반환값:
이 객체의 해시 코드값
관련 항목:
Object.equals(java.lang.Object) , Hashtable

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 도 참조해 주세요.