001package net.gdface.utils;
002
003import static com.google.common.base.Preconditions.checkNotNull;
004
005import com.google.common.base.Function;
006
007/**
008 * 枚举类型转换
009 * @author guyadong
010 *
011 * @param <L>
012 * @param <R>
013 */
014public class EnumTransformer<L extends Enum<L>,R extends Enum<R>> implements Function<L,R>{
015        private final Class<R> right;
016        public EnumTransformer(Class<L> left, Class<R> right) {
017                checkNotNull(left,"left is null");
018                this.right = checkNotNull(right,"right is null");
019        }
020        @Override
021        public R apply(L input) {
022                return null == input ? null : Enum.valueOf(right, input.name());
023        }       
024}