package com.alibaba.tamper.process.convertor;
import com.alibaba.tamper.core.BeanMappingException;
/**
* string <-> Enum 之间的转化
*
* @author jianghang 2011-7-12 下午12:49:30
*/
public class StringAndEnumConvertor {
/**
* string -> Enum 对象的转化
*/
public static class StringToEnum extends AbastactConvertor {
@Override
public Object convert(Object src, Class destClass) {
if (src instanceof String && destClass.isEnum()) {
return Enum.valueOf(destClass, (String) src);
}
throw new BeanMappingException("Unsupported convert: [" + src.getClass() + "," + destClass.getName() + "]");
}
}
/**
* Enum -> String 对象的转化
*/
public static class EnumToString extends AbastactConvertor {
@Override
public Object convert(Object src, Class destClass) {
if (src.getClass().isEnum() && destClass == String.class) {
return ((Enum) src).name(); // 返回定义的enum name
}
throw new BeanMappingException("Unsupported convert: [" + src.getClass() + "," + destClass.getName() + "]");
}
}
}