package org.zu.ardulink.util; /** * [ardulinktitle] [ardulinkversion] * * @author Peter Fichtner * * [adsense] */ public enum Primitive { INT(Integer.TYPE) { @Override public Object parse(String value) { return Integer.parseInt(value); } }, BYTE(Byte.TYPE) { @Override public Object parse(String value) { return Byte.parseByte(value); } }, SHORT(Short.TYPE) { @Override public Object parse(String value) { return Short.parseShort(value); } }, LONG(Long.TYPE) { @Override public Object parse(String value) { return Long.parseLong(value); } }, FLOAT(Float.TYPE) { @Override public Object parse(String value) { return Float.parseFloat(value); } }, DOUBLE(Double.TYPE) { @Override public Object parse(String value) { return Double.parseDouble(value); } }, BOOLEAN(Boolean.TYPE) { @Override public Object parse(String value) { return Boolean.parseBoolean(value); } }, CHAR(Character.TYPE) { @Override public Object parse(String value) { return value.length() == 0 ? null : Character.valueOf(value .charAt(0)); } }; private final Class<?> type; private Primitive(Class<?> type) { this.type = type; } public abstract Object parse(String value); public static Object parseAs(Class<?> type, String value) { for (Primitive primitive : Primitive.values()) { if (type.isAssignableFrom(primitive.getType())) { return primitive.parse(value); } } return null; } public static Primitive forClassName(String name) { for (Primitive primitives : values()) { if (primitives.getType().getName().equals(name)) { return primitives; } } return null; } public Class<?> getType() { return type; } }