/************************************************************************************** * Copyright (c) Jonas Bon�r, Alexandre Vasseur. All rights reserved. * * http://aspectwerkz.codehaus.org * * ---------------------------------------------------------------------------------- * * The software in this package is published under the terms of the LGPL license * * a copy of which has been included with this distribution in the license.txt file. * **************************************************************************************/ package org.codehaus.aspectwerkz.reflect; /** * Methods to convert Class to Java type names. Handles array types and the constructor "return" type. * * @author <a href="mailto:jboner@codehaus.org">Jonas Bon�r </a> * @author <a href="mailto:vta@medios.fi">Tibor Varga </a> */ public class TypeConverter { /** * Converts an array of Classes to their Java language declaration equivalents. * * @param types is the array of <code>Class</code> objects. * @return an array of Strings representing the given types. For <code>null</code> types, this method returns * "void"s. */ public static String[] convertTypeToJava(final Class[] types) { String[] parameterTypeNames = new String[types.length]; for (int i = 0; i < types.length; i++) { parameterTypeNames[i] = convertTypeToJava(types[i]); } return parameterTypeNames; } /** * Converts a Class to its Java language declaration equivalent. * * @param type is the <code>Class</code> object. * @return a Strings representing the given types. For <code>null</code> type, this method returns "void". */ public static String convertTypeToJava(final Class type) { String rv = null; // constructor return type can be null if (type != null) { StringBuffer dim = new StringBuffer(); Class componentType = type.getComponentType(); for (Class nestedType = type; nestedType.isArray(); nestedType = nestedType.getComponentType()) { dim.append("[]"); } // Found a component type => we had an array if (dim.length() > 0) { rv = componentType.getName() + dim; } else { rv = type.getName(); } } else { rv = "void"; } return rv; } }