1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | package Torello.JavaDoc; /** * CIET: Class, Interface, Enumerated-Type, Annotation (@interface) or Java 17+ Record. * * <BR /><BR /><EMBED CLASS='external-html' DATA-FILE-ID=CIET> */ public enum CIET { /** Identifies that the associated file represents a java {@code 'class'} */ CLASS("class"), /** Identifies that the associated file represents a java {@code 'interface'} */ INTERFACE("interface"), /** Identifies that the associated file represents a java {@code 'enum'} (Enumerated-Type) */ ENUM("enum"), /** * Identifies that the associated file represents a java {@code 'Annotation'} * ({@code @interface}) */ ANNOTATION("@interface"), /** Identifies that the associated file represents a (new, Java 14+) {@code 'record'}. */ RECORD("record"); /** The name of this CIET, as a String */ private final String name; // private constructor, for the 'name' field private CIET(String name) { this.name = name; } /** * Returns the name of this CIET, in string format. * * @return Will return the name of this CIET as a String. The actual string returned is, in * in all three cases, the restricted-java key-word that indicating whether this is a 'class' * 'interface' or 'enum' (Enumerated-Type) by returning <I><B>that exact String</I></B> as a * result when invoking this method. */ public String toString() { return name; } /** * Returns the enum constant of this type with the specified name. * An invocation of {@code '.trim().toLowerCase()'} is performed, allowing white-space and * oddly capitalized names for the {@code String 'name'} parameter. * * <BR /><BR /><B CLASS=JDDescLabel>Note:</B> * * <BR />Java's enumerated-type auto-generated method {@code 'valueOf(String name)'} may not be * over-ridden. Unfortunately, the {@code String} provided to this method only permits / * tolerates {@code String's} that are identical to the exact-spelling of the enum-constant * itself. * * <BR /><BR />For instance: {@code CIET.valueOf("CLASS")} returns the {@code 'CLASS'} * constant. However if the string {@code 'class'} were passed, an * {@code 'IllegalArgumentException'} would be thrown. In order to avoid this, this * method {@code get(String name)} is provided as an alternative, as it accepts * case-insensitive input. * * @param name This is the CIET name, as a String. * * @return the CIET constant with the specified name * * @throws NullPointerException if 'name' is null. * * @throws IllegalArgumentException if, even after trim() and toLowerCase(), none of the CIET * names-as-Strings equal the specified input parameter 'name' */ public static CIET get(String name) { switch (name.trim().toLowerCase()) { case "class" : return CLASS; case "interface" : return INTERFACE; case "enum" : return ENUM; case "@interface" : return ANNOTATION; default : throw new IllegalArgumentException( "There was no CIET associated with the provided string: [" + name + "]." ); } } } |