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.