Saltar al contenido

Obtenga una lista de todas las palabras clave reservadas de Java

Esta es la contestación más correcta que encomtrarás aportar, pero primero mírala detenidamente y valora si se adapta a tu proyecto.

Solución:

De axis.apache.org

Básicamente, Ordenar previamente las palabras clave y almacenarlo en un array y usando Arrays.binarySearch en su palabra clave para el good'ol O (inicio de sesión) complejidad

import java.util.Arrays;

    public class MainDemo 
        static final String keywords[] =  "abstract", "assert", "boolean",
                "break", "byte", "case", "catch", "char", "class", "const",
                "continue", "default", "do", "double", "else", "extends", "false",
                "final", "finally", "float", "for", "goto", "if", "implements",
                "import", "instanceof", "int", "interface", "long", "native",
                "new", "null", "package", "private", "protected", "public",
                "return", "short", "static", "strictfp", "super", "switch",
                "synchronized", "this", "throw", "throws", "transient", "true",
                "try", "void", "volatile", "while" ;

        public static boolean isJavaKeyword(String keyword) 
            return (Arrays.binarySearch(keywords, keyword) >= 0);
        

        //Main method
        public static void main(String[] args) 
            System.out.println(isJavaKeyword("void"));

        

    

Producción:

Cierto


Alternativamente, como los usuarios @typeracer, @holger sugirieron en los comentarios, puede usar SourceVersion.isKeyword("void") que utiliza javax.lang.model.SourceVersion biblioteca y Hashset Estructura de datos internamente y mantiene la lista actualizada para usted.

Me sorprende que nadie haya sugerido javax.lang.model.SourceVersion todavía, porque en realidad existe desde Java 1.6.

Si necesita comprobar si algunos string es una palabra clave reservada, puede simplemente llamar:

SourceVersion.isKeyword(str)

Y si realmente necesita la lista completa de las palabras clave reservadas, puede obtenerla del código fuente de esa clase:

private final static Set keywords;
static 
    Set s = new HashSet();
    String [] kws = 
        "abstract", "continue",     "for",          "new",          "switch",
        "assert",   "default",      "if",           "package",      "synchronized",
        "boolean",  "do",           "goto",         "private",      "this",
        "break",    "double",       "implements",   "protected",    "throw",
        "byte",     "else",         "import",       "public",       "throws",
        "case",     "enum",         "instanceof",   "return",       "transient",
        "catch",    "extends",      "int",          "short",        "try",
        "char",     "final",        "interface",    "static",       "void",
        "class",    "finally",      "long",         "strictfp",     "volatile",
        "const",    "float",        "native",       "super",        "while",
        // literals
        "null",     "true",         "false"
    ;
    for(String kw : kws)
        s.add(kw);
    keywords = Collections.unmodifiableSet(s);


Precaución: el código fuente anterior es de java 1.8, entonces no solo copie y pegue de esta publicación si está utilizando una versión diferente de Java. De hecho, probablemente no sea una buena idea copiarlo en absoluto: hicieron que el campo privado por una buena razón: probablemente no quiera tener que mantenerlo actualizado para cada nueva versión de Java. Pero si es absolutamente necesario tenerlo, cópielo del código fuente en su propia distribución JDK, teniendo en cuenta que es posible que deba seguir actualizándolo manualmente más adelante.

No existe un método API directo. Como alternativa, los tomas en un array y verifique las coincidencias de palabras clave ingresadas en el array si palabras clave.

 public static String[] keys=   "new",.....  

entonces

 for (int i = 0; i < keys.length; i++)   
            if (input.equals(keys[i]))   
               // TO DO
              
          

Calificaciones y reseñas

Acuérdate de que tienes concesión de esclarecer si te fue de ayuda.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada.