package com.tns.bindings.desc; public interface ClassDescriptor extends Descriptor{ class PrimitiveTypeInfo implements ClassDescriptor { private final String sig; PrimitiveTypeInfo(String sig) { this.sig = sig; } @Override public boolean isPrimitive() { return true; } @Override public boolean isArray() { return false; } @Override public boolean isInterface() { return false; } @Override public String getSignature() { return sig; } @Override public String getName() { return sig; } @Override public MethodDescriptor[] getConstructors() { return new MethodDescriptor[0]; } @Override public ClassDescriptor getComponentType() { return null; } @Override public MethodDescriptor[] getDeclaredMethods() { return new MethodDescriptor[0]; } @Override public ClassDescriptor[] getInterfaces() { return new ClassDescriptor[0]; } @Override public ClassDescriptor getSuperclass() { return null; } @Override public boolean isSynthetic() { return false; } @Override public boolean isStatic() { return false; } @Override public boolean isPrivate() { return false; } @Override public boolean isPublic() { return false; } @Override public boolean isProtected() { return false; } @Override public boolean isFinal() { return false; } @Override public boolean isAbstract() { return false; } public static String getBoxedTypeName(ClassDescriptor c) { String name = null; if (c.isPrimitive()) { char ch = c.getSignature().charAt(0); switch (ch) { case 'V': name = Void.class.getName(); break; case 'Z': name = Boolean.class.getName(); break; case 'C': name = Character.class.getName(); break; case 'B': name = Byte.class.getName(); break; case 'S': name = Short.class.getName(); break; case 'I': name = Integer.class.getName(); break; case 'J': name = Long.class.getName(); break; case 'F': name = Float.class.getName(); break; case 'D': name = Double.class.getName(); break; } } return name; } } boolean isPrimitive(); boolean isArray(); boolean isInterface(); String getSignature(); String getName(); MethodDescriptor[] getConstructors(); ClassDescriptor getComponentType(); MethodDescriptor[] getDeclaredMethods(); ClassDescriptor[] getInterfaces(); ClassDescriptor getSuperclass(); static ClassDescriptor VOID = new PrimitiveTypeInfo("V"); static ClassDescriptor BOOLEAN = new PrimitiveTypeInfo("Z"); static ClassDescriptor CHAR = new PrimitiveTypeInfo("C"); static ClassDescriptor BYTE = new PrimitiveTypeInfo("B"); static ClassDescriptor SHORT = new PrimitiveTypeInfo("S"); static ClassDescriptor INT = new PrimitiveTypeInfo("I"); static ClassDescriptor LONG = new PrimitiveTypeInfo("J"); static ClassDescriptor FLOAT = new PrimitiveTypeInfo("F"); static ClassDescriptor DOUBLE = new PrimitiveTypeInfo("D"); }