1 package net.sourceforge.pmd.util; 2 3 import java.math.BigDecimal; 4 5 6 /*** 7 * Various class-related utility methods 8 * 9 * @author Brian Remedios 10 */ 11 public class ClassUtil { 12 13 private ClassUtil() {}; 14 15 private static final TypeMap primitiveTypesByName = new TypeMap( new Class[] { 16 int.class, 17 byte.class, 18 long.class, 19 short.class, 20 float.class, 21 double.class, 22 char.class, 23 boolean.class, 24 }); 25 26 private static final TypeMap typesByNames = new TypeMap( new Class[] { 27 Integer.class, 28 Byte.class, 29 Long.class, 30 Short.class, 31 Float.class, 32 Double.class, 33 Character.class, 34 Boolean.class, 35 BigDecimal.class, 36 String.class, 37 Object.class, 38 }); 39 40 /*** 41 * Returns the type(class) for the name specified 42 * or null if not found. 43 * 44 * @param name String 45 * @return Class 46 */ 47 public static Class getPrimitiveTypeFor(String name) { 48 return primitiveTypesByName.typeFor(name); 49 } 50 51 /*** 52 * Attempt to determine the actual class given the short name. 53 * 54 * @param shortName String 55 * @return Class 56 */ 57 public static Class getTypeFor(String shortName) { 58 59 Class type = typesByNames.typeFor(shortName); 60 if (type != null) return type; 61 62 type = primitiveTypesByName.typeFor(shortName); 63 if (type != null) return type; 64 65 return CollectionUtil.getCollectionTypeFor(shortName); 66 } 67 /*** 68 * Returns the abbreviated name of the type, 69 * without the package name 70 * 71 * @param fullTypeName 72 * @return String 73 */ 74 75 public static String withoutPackageName(String fullTypeName) { 76 77 int dotPos = fullTypeName.lastIndexOf('.'); 78 79 return dotPos > 0 ? 80 fullTypeName.substring(dotPos+1) : 81 fullTypeName; 82 } 83 }