ParameterFormatter.java
package com.github.mygreen.messageformatter;
import java.lang.annotation.Annotation;
import java.util.ArrayList;
import java.util.List;
/**
* アノテーション型や列挙型などの特定のパラメータをフォーマットします。
*
*
* @author T.TSUCHIE
*
*/
public class ParameterFormatter {
/**
* アノテーションをフォーマットします。
* @param annoClass アノテーションのクラス
* @return フォーマットした結果。
*/
public String formatWithAnno(final Class<? extends Annotation> annoClass) {
return "@" + annoClass.getSimpleName();
}
/**
* クラス名をフォーマットします。
* @param clazz クラス。
* @return フォーマットした結果。
*/
public String formatWithClass(final Class<?> clazz) {
final String className;
if(clazz.isArray()) {
// 配列の場合
Class<?> elementType = clazz.getComponentType();
className = elementType.getName() + "[]";
} else {
className = clazz.getName();
}
return className;
}
/**
* 複数のクラス名をフォーマットします。
* @param classes クラスの配列
* @return フォーマットした結果
*/
public List<String> formatWithClasses(final Class<?>... classes) {
List<String> list = new ArrayList<>();
for(Class<?> clazz : classes) {
final String className;
if(clazz.isArray()) {
// 配列の場合
Class<?> elementType = clazz.getComponentType();
className = elementType.getName() + "[]";
} else {
className = clazz.getName();
}
list.add(className);
}
return list;
}
/**
* 列挙型をフォーマットします。
* @param enums 列挙型の要素
* @return フォーマットした結果
*/
public String formatWithEnum(final Enum<?> enums) {
return enums.getClass().getSimpleName() + "#" + enums.name();
}
}