public static Object convert ( MultiTypeData d , Class c ) { // Check if it is an boolean convertion. if ( ( ( d . typeFlags & BOOLEAN ) != 0 ) && ( Boolean . TYPE . equals ( c ) || Boolean . class . equals ( c ) ) ) { return d . booleanValue ; } // Check if it is an int convertion. else if ( ( ( d . typeFlags & INT ) != 0 ) && ( Integer . TYPE . equals ( c ) || Integer . class . equals ( c ) ) ) { return d . intValue ; } // Check if it is an char convertion. else if ( ( ( d . typeFlags & CHAR ) != 0 ) && ( Character . TYPE . equals ( c ) || Character . class . equals ( c ) ) ) { return d . charValue ; } // Check if it is an byte convertion. else if ( ( ( d . typeFlags & BYTE ) != 0 ) && ( Byte . TYPE . equals ( c ) || Byte . class . equals ( c ) ) ) { return d . byteValue ; } // Check if it is an short convertion. else if ( ( ( d . typeFlags & SHORT ) != 0 ) && ( Short . TYPE . equals ( c ) || Short . class . equals ( c ) ) ) { return d . shortValue ; } // Check if it is an long convertion. else if ( ( ( d . typeFlags & LONG ) != 0 ) && ( Long . TYPE . equals ( c ) || Long . class . equals ( c ) ) ) { return d . longValue ; } // Check if it is an float convertion. else if ( ( ( d . typeFlags & FLOAT ) != 0 ) && ( Float . TYPE . equals ( c ) || Float . class . equals ( c ) ) ) { return d . floatValue ; } // Check if it is an double convertion. else if ( ( ( d . typeFlags & DOUBLE ) != 0 ) && ( Double . TYPE . equals ( c ) || Double . class . equals ( c ) ) ) { return d . doubleValue ; } // Check if it is a string convertion. else if ( ( ( d . typeFlags & STRING ) != 0 ) && String . class . equals ( c ) ) { return d . stringValue ; } // Check if it is an object convertion and th object types match. else if ( ( ( d . typeFlags & OBJECT ) != 0 ) && d . objectValue . getClass ( ) . equals ( c ) ) { return d . objectValue ; } // Throw a class cast exception if the multi data type cannot be converted to the specified class. else { throw new ClassCastException ( "The multi data type, " + d + ", cannot be converted to the class, " + c + "." ) ; } }
Given a multi type data object and a class representing a type this method attemps to return an object of that class created from the multi type data . The exception to this rule is if the specified data type is a primtive type such as int . clas then the returned object will be of the equivalent wrapper class type Integer . class in this case . This is because a primitive cannot be returned under an Object return type .