package org.nutz.castor.castor;
import org.nutz.castor.Castor;
import org.nutz.castor.FailToCastObjectException;
import org.nutz.lang.Mirror;
@SuppressWarnings({"rawtypes"})
public class Enum2Number extends Castor<Enum, Number> {
@Override
public Number cast(Enum src, Class<?> toType, String... args)
throws FailToCastObjectException {
Mirror<?> mi = Mirror.me(src);
// 首先尝试调用枚举对象的 value() 方法
try {
return (Number) mi.invoke(src, "value");
}
// 如果失败,就用其顺序号
catch (Exception e) {
Integer re = src.ordinal();
return (Number) Mirror.me(toType).born(re.toString());
}
}
}