Format

Format (로케일 민감 정보 형식화 기본 클래스)

날짜, 메시지, 숫자 같은 로케일 민감 정보를 형식화하기 위한 추상 기본 클래스예요. Format은 로케일 민감 객체를 String으로 형식화하는 프로그래밍 인터페이스(format 메서드)와, String을 다시 객체로 파싱하는 인터페이스(parseObject 메서드)를 정의해요.

출처: Java API Reference

본문

일반적으로 format의 parseObject 메서드는 자신의 format 메서드가 형식화한 모든 문자열을 파싱할 수 있어야 해요. 그러나 불가능한 예외적 경우가 있을 수 있어요. 예를 들어 format 메서드가 구분자 없는 두 인접 정수를 만들 수 있는데, 그 경우 parseObject가 어떤 자릿수가 어떤 숫자에 속하는지 알 수 없어요.

하위 클래싱

Java 플랫폼은 Format의 세 가지 특수 하위 클래스를 제공해요 — 날짜·메시지·숫자를 각각 형식화하는 DateFormat, MessageFormat, NumberFormat이에요.

구체 하위 클래스는 세 메서드를 구현해야 해요.

  • format(Object obj, StringBuffer toAppendTo, FieldPosition pos)
  • formatToCharacterIterator(Object obj)
  • parseObject(String source, ParsePosition pos)

이 일반 메서드들은 객체의 다형적 파싱·형식화를 허용하며, 예를 들어 MessageFormat이 사용해요. 하위 클래스는 종종 특정 입력 타입을 위한 추가 format 메서드와 특정 결과 타입을 위한 parse 메서드도 제공해요. ParsePosition 인자를 취하지 않는 parse 메서드는 입력 텍스트의 시작 부분에 요구된 형식의 텍스트가 없을 때 ParseException을 던져야 해요.

대부분의 하위 클래스는 다음 팩토리 메서드도 구현해요.

  • getInstance() — 현재 로케일에 적합한 유용한 format 객체
  • getInstance(Locale) — 지정 로케일에 적합한 format 객체

일부 하위 클래스는 더 특수한 제어를 위해 다른 getXxxxInstance 메서드도 구현해요. 예를 들어 NumberFormat은 특수 숫자 포매터를 얻기 위한 getPercentInstancegetCurrencyInstance를 제공해요.

로케일용 객체를 만들 수 있게 하는 Format 하위 클래스는 다음 클래스 메서드도 구현해야 해요.

public static Locale[] getAvailableLocales()

마지막으로 하위 클래스는 형식화된 출력의 다양한 필드를 식별하는 상수 집합을 정의할 수 있는데, 이 상수들은 필드가 담는 정보와 형식화 결과에서의 위치를 식별하는 FieldPosition 객체를 만드는 데 쓰여요. 상수는 ERA_FIELD처럼 item_FIELD로 이름 지어야 해요. DateFormatERA_FIELD와 그 친구들이 예시예요.

동기화: Format의 형식화는 동기화되지 않아요. 형식을 여러 스레드가 공유하려면 외부 동기화가 필요해요.

더 알아보기 (Learn more)

Java 공식 API