Here you can find the source of convert(Object o, Class> targetType)
public static Object convert(Object o, Class<?> targetType)
//package com.java2s; /*// www . j a v a 2 s . c o m * Copyright 2004-2011 H2 Group. Multiple-Licensed under the H2 License, * Version 1.0, and under the Eclipse Public License, Version 1.0 * (http://h2database.com/html/license.html). * Initial Developer: H2 Group */ import java.io.IOException; import java.io.Reader; import java.io.StringWriter; import java.sql.Clob; public class Main { private static final int BUFFER_BLOCK_SIZE = 4 * 1024; public static Object convert(Object o, Class<?> targetType) { if (o == null) { return null; } Class<?> currentType = o.getClass(); if (targetType.isAssignableFrom(currentType)) { return o; } if (targetType == String.class) { if (Clob.class.isAssignableFrom(currentType)) { Clob c = (Clob) o; try { Reader r = c.getCharacterStream(); return readStringAndClose(r, -1); } catch (Exception e) { throw new RuntimeException("Error converting CLOB to String: " + e.toString(), e); } } return o.toString(); } if (Number.class.isAssignableFrom(currentType)) { Number n = (Number) o; if (targetType == Byte.class) { return n.byteValue(); } else if (targetType == Short.class) { return n.shortValue(); } else if (targetType == Integer.class) { return n.intValue(); } else if (targetType == Long.class) { return n.longValue(); } else if (targetType == Double.class) { return n.doubleValue(); } else if (targetType == Float.class) { return n.floatValue(); } } throw new RuntimeException("Can not convert the value " + o + " from " + currentType + " to " + targetType); } /** * Read a number of characters from a reader and close it. * * @param in the reader * @param length the maximum number of characters to read, or -1 to read * until the end of file * @return the string read */ public static String readStringAndClose(Reader in, int length) throws IOException { try { if (length <= 0) { length = Integer.MAX_VALUE; } int block = Math.min(BUFFER_BLOCK_SIZE, length); StringWriter out = new StringWriter(length == Integer.MAX_VALUE ? block : length); char[] buff = new char[block]; while (length > 0) { int len = Math.min(block, length); len = in.read(buff, 0, len); if (len < 0) { break; } out.write(buff, 0, len); length -= len; } return out.toString(); } finally { in.close(); } } }