/** Return a UtilEvalError or UtilTargetError wrapping a ClassCastException describing an illegal assignment or illegal cast, respectively. */ static UtilEvalError castError( Class lhsType, Class rhsType, int operation ) { return castError( StringUtil.typeString(lhsType), StringUtil.typeString(rhsType), operation ); }
/** Return a UtilEvalError or UtilTargetError wrapping a ClassCastException describing an illegal assignment or illegal cast, respectively. */ public static UtilEvalError castError( Class lhsType, Class rhsType, int operation ) { return castError( Reflect.normalizeClassName(lhsType), Reflect.normalizeClassName(rhsType), operation ); }
return Types.INVALID_CAST; else throw Types.castError( Reflect.normalizeClassName(toType), "void value", operation ); return Types.INVALID_CAST; else throw Types.castError( "primitive type:" + toType, "Null value", operation ); return Types.INVALID_CAST; else throw Types.castError( "object type:" + toType, "primitive value", operation); return Types.INVALID_CAST; else throw Types.castError( toType, fromType, operation ); return Types.INVALID_CAST; else throw Types.castError( toType, fromType, operation );
return Types.INVALID_CAST; else throw Types.castError( StringUtil.typeString(toType), "void value", operation ); return Types.INVALID_CAST; else throw Types.castError( "primitive type " + toType.getSimpleName(), "null value", operation ); return Types.INVALID_CAST; throw Types.castError( "object type " + toType.getName(), "primitive value", operation); return Types.INVALID_CAST; else throw Types.castError( toType, fromType, operation ); return Types.INVALID_CAST; throw Types.castError( toType, fromType, operation );
/** Helper class for type suffixes. */ public static class Suffix { private static final Map<String, Class<?>> m = Collections.unmodifiableMap(new HashMap<String, Class<?>>() { private static final long serialVersionUID = 1L; { put("O", Byte.TYPE); put("S", Short.TYPE); put("I", Integer.TYPE); put("L", Long.TYPE); put("W", BigInteger.class); put("w", BigDecimal.class); put("d", Double.TYPE); put("f", Float.TYPE); } }); private static String toUpperKey(Character key) { return key.toString().toUpperCase(); } private static String toLowerKey(Character key) { return key.toString().toLowerCase(); } public static boolean isIntegral(Character key) { return m.containsKey(toUpperKey(key)); } public static Class<?> getIntegralType(Character key) { return m.get(toUpperKey(key));