MessageFormat
MessageFormat클래스는 양식에 맞게 메시지를 형식화하는 편리한 클래스입니다. 주로 DB query에 이 MessageFormat이 쓰이는데, 한번 코드를 보면서 이해하도록 하겠습니다.
기본적인 클래스 사용법은 이렇습니다.
MessageFormat format=new MessageFormat(
"Name : {0}\n"+
"Age : {1}\n"+
"Name, Age : {0}, {1}");
String[] args= {"reakwon","7"};
System.out.println(format.format(args));
중괄호의 숫자가 Arguement들의 인덱스를 나타냅니다. Arguement들은 배열의 행태로 위의 args변수에 문자열 배열로 담겨있습니다. 그래서 {0}은 "reakwon", {1}은 "7"로 치환되게 됩니다. 그래서 그 결과는 아래와 같습니다.
Name : reakwon
Age : 7
Name, Age : reakwon, 7
이런 MessageFormat의 사용처는 MySQL과 같은 query에 주로 사용합니다. SELECT * FROM my_table WHERE id = 'reakwon' 이런 쿼리들을 일반화할때 SELECT * FROM {0} WHERE {1} = '{2}' 식으로 사용할 수가 있죠.
MessageFormat format=new MessageFormat(
"SELECT * FROM {0} WHERE {1} = {2}");
String[] args= {"my_table","id","'reakwon'"};
System.out.println(format.format(args));
결과
SELECT * FROM my_table WHERE id = 'reakwon'
static 메소드로 객체 생성하지 않고 사용할 수도 있습니다. 일회성으로 사용하려면 아래의 방법으로 간편하게 사용할 수도 있지요. MessageFormat의 static 메소드를 바로 사용하는 것을 알 수 있죠.
String message="SELECT * FROM {0} WHERE {1} = {2}";
String[] args= {"my_table","id","'reakwon'"};
System.out.println(MessageFormat.format(message,args));
날짜 형식
MessageFormat은 문자열로만 받는 것은 아닙니다. 날짜와 시간도 이런식으로 받아볼 수 있습니다. 아래의 예시처럼 출력할 수도 있습니다.
String message= "오늘 Date: {0,date}, Time :{0,time}";
System.out.println(MessageFormat.format(message, new Date()));
결과
오늘 Date: 2021. 4. 6., Time :오전 12:04:34
쉼표와 date, time 등으로 날짜와 시간도 지정할 수 있습니다. new Date()로 시간과 날짜를 볼 수 있습니다. 이때 더 많은 정보를 보고 싶다면 아래처럼 사용하면 됩니다.
String message= "오늘 Date: {0,date,full}, Time :{0,time,full}";
System.out.println(MessageFormat.format(message, new Date()));
아래와 같이 요일까지 출력이되며 시간 같은 경우에는 나라의 정보도 확인할 수 있습니다.
오늘 Date: 2021년 4월 6일 화요일, Time :오전 12시 7분 11초 대한민국 표준시
반대로 간략한 정보를 원한다면 short로 바꿔서 입력해주면 됩니다. 더 많은 FormatType과 FormatStyle을 보시려면 지원하는 형식은 아래를 참고해주세요.
기존의 형식 패턴을 applyPattern()으로 다시 지정해서 사용할 수도 있습니다. 이런 방식은 static 메소드가 아닌 객체를 만들어서 계속 사용할때 사용하는 방법입니다.
String message= "오늘 Date: {0,date,short}, Time :{0,time,short}";
MessageFormat format = new MessageFormat(message);
Object[] args= {new Date()};
System.out.println(format.format(args));
String newMessage="자세히 \n"+
"오늘 Date: {0,date,full}, Time :{0,time,full}";
format.applyPattern(newMessage);
System.out.println(format.format(args));
결과
오늘 Date: 21. 4. 6., Time :오전 12:14
자세히
오늘 Date: 2021년 4월 6일 화요일, Time :오전 12시 14분 29초 대한민국 표준시
자, 여기까지 MessageFormat에 대한 소개와 사용 예제를 알아보았습니다. 이런 형식 클래스들은 유용한 경우가 많으니 알아두시면 좋을 것 같습니다.
'언어 > JAVA' 카테고리의 다른 글
[자바/GUI] LayoutManager(BorderLayout, FlowLayout, GridLayout, CardLayout)으로 Component 배치 예제 (0) | 2021.04.06 |
---|---|
[자바/GUI] AWT(Abstract Window Toolkit)의 기초 - Frame 클래스 (0) | 2021.04.06 |
[JAVA] 10진수 형식 클래스(DecimalFormat) - 세자리마다 쉼표, 소수점, 지수 나타내기 (0) | 2021.04.05 |
[자바] 이것만 알면 예외(Exception) 정복 - 예제를 통한 개념과 예외 처리 방법 (1) | 2021.04.03 |
[Collection] Vector 완전 정복하기 - 특징과 깊이 있는 사용법 (0) | 2021.04.01 |