1 package org.pojomatic.internal; 2 3 import java.util.HashMap; 4 import java.util.Map; 5 6 import org.objectweb.asm.Opcodes; 7 8 class Primitives { 9 private final static Map<Class<?>, Class<?>> WRAPPER_CLASSES = new HashMap<>(); 10 private final static Map<Class<?>, Integer> OPCODES = new HashMap<>(); 11 12 static { 13 register(void.class, Void.class, Opcodes.NULL); 14 register(boolean.class, Boolean.class, Opcodes.INTEGER); 15 register(byte.class, Byte.class, Opcodes.INTEGER); 16 register(char.class, Character.class, Opcodes.INTEGER); 17 register(short.class, Short.class, Opcodes.INTEGER); 18 register(int.class, Integer.class, Opcodes.INTEGER); 19 register(long.class, Long.class, Opcodes.LONG); 20 register(float.class, Float.class, Opcodes.FLOAT); 21 register(double.class, Double.class, Opcodes.DOUBLE); 22 } 23 24 static Class<?> getWrapperClass(Class<?> primitiveClass) { 25 return WRAPPER_CLASSES.get(primitiveClass); 26 } 27 28 static Integer getOpcode(Class<?> primitiveClass) { 29 return OPCODES.get(primitiveClass); 30 } 31 32 private static <T> void register(Class<T> clazz, Class<? extends T> wrapperClass, Integer opcode) { 33 WRAPPER_CLASSES.put(clazz, wrapperClass); 34 OPCODES.put(clazz, opcode); 35 } 36 }