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