Created
May 16, 2019 20:12
-
-
Save danielezonca/593473e44a441d31406990240b4e28e8 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public enum TypeEnum { | |
INT { | |
@Override | |
protected boolean acceptInternal(Object parameter) { | |
Class<?> clazz = parameter.getClass(); | |
return clazz.isAssignableFrom(Integer.class) || clazz.isAssignableFrom(int.class); | |
} | |
@Override | |
protected String applyInternal(Object parameter) { | |
return String.valueOf(parameter); | |
} | |
@Override | |
protected Object unapplyInternal(String parameter) { | |
return Integer.parseInt(parameter); | |
} | |
}, | |
DOUBLE { | |
@Override | |
protected boolean acceptInternal(Object parameter) { | |
Class<?> clazz = parameter.getClass(); | |
return clazz.isAssignableFrom(Double.class) || clazz.isAssignableFrom(double.class); | |
} | |
@Override | |
protected String applyInternal(Object parameter) { | |
return parameter + "d"; | |
} | |
@Override | |
protected Object unapplyInternal(String parameter) { | |
return Double.parseDouble(parameter); | |
} | |
} | |
// .... | |
; | |
protected abstract boolean acceptInternal(Object parameter); | |
protected abstract String applyInternal(Object parameter); | |
protected abstract Object unapplyInternal(String parameter); | |
public static String apply(Object parameter) { | |
for (TypeEnum value : values()) { | |
if(value.acceptInternal(parameter)) { | |
return value.applyInternal(parameter); | |
} | |
} | |
throw new IllegalArgumentException("Not supported"); | |
} | |
public static Object unapply(String parameter) { | |
for (TypeEnum value : values()) { | |
if(value.acceptInternal(parameter)) { | |
return value.unapplyInternal(parameter); | |
} | |
} | |
throw new IllegalArgumentException("Not supported"); | |
} | |
} | |
class Invoker { | |
public static void apply(Object parameter) { | |
System.out.println(TypeEnum.apply(parameter)); | |
} | |
public static void unapply(String parameter) { | |
System.out.println(TypeEnum.unapply(parameter)); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment