Here you can find the source of castToPrimitive(Object value, String targetType)
public static Object castToPrimitive(Object value, String targetType)
//package com.java2s; //License from project: Open Source License public class Main { public static Object castToPrimitive(Object value, String targetType) { // TODO: add tests for this + confirm dalvik works this way // Type information is not always available beyond "const" because Dalvik handles multiple types like integers. // This is to make easier the casting of that number to the correct type. if (value instanceof Number) { Number castValue = (Number) value; if ("B".equals(targetType) || "Ljava/lang/Byte;".equals(targetType)) { return castValue.byteValue(); } else if ("D".equals(targetType) || "Ljava/lang/Double;".equals(targetType)) { return castValue.doubleValue(); } else if ("F".equals(targetType) || "Ljava/lang/Float;".equals(targetType)) { return castValue.floatValue(); } else if ("I".equals(targetType) || "Ljava/lang/Integer;".equals(targetType)) { return castValue.intValue(); } else if ("L".equals(targetType) || "Ljava/lang/Long;".equals(targetType)) { return castValue.longValue(); } else if ("S".equals(targetType) || "Ljava/lang/Short;".equals(targetType)) { return castValue.shortValue(); } else if ("C".equals(targetType) || "Ljava/lang/Character;".equals(targetType)) { return (char) castValue.intValue(); } else if ("Z".equals(targetType) || "Ljava/lang/Boolean;".equals(targetType)) { return castValue.intValue() != 0 ? true : false; }/*from w w w .java 2 s . com*/ } else if (value instanceof Boolean) { Boolean castValue = (Boolean) value; if ("Z".equals(targetType) || "Ljava/lang/Boolean;".equals(targetType)) { return castValue; } else if ("B".equals(targetType) || "Ljava/lang/Byte;".equals(targetType)) { return (byte) (castValue ? 1 : 0); } else if ("I".equals(targetType) || "Ljava/lang/Integer;".equals(targetType)) { return castValue ? 1 : 0; } else if ("S".equals(targetType) || "Ljava/lang/Short;".equals(targetType)) { return (short) (castValue ? 1 : 0); } } else if (value instanceof Character) { Character castValue = (Character) value; Integer intValue = (int) castValue; if ("Z".equals(targetType) || "Ljava/lang/Boolean;".equals(targetType)) { return (int) castValue != 0 ? true : false; } else if ("B".equals(targetType) || "Ljava/lang/Byte;".equals(targetType)) { return intValue.byteValue(); } else if ("I".equals(targetType) || "Ljava/lang/Integer;".equals(targetType)) { return intValue; } else if ("S".equals(targetType) || "Ljava/lang/Short;".equals(targetType)) { return intValue.shortValue(); } } return value; } }