我需要在IntelliJ的项目中创建一个声明为枚举的类列表,并在每个类中列出相应的值。是否有任何自动化的方法来完成这项任务,因为它是一个相当大的项目,有数百次出现。
6mw9ycah1#
是的,您可以使用类型层次结构视图并将条目导出到文件中。我使用eclipse快捷方式,我可以使用F4打开类型层次结构。只需要确保过滤Production文件。使用Guava项目的示例:
F4
Production
至于获取每个枚举的所有值,我不认为在IntelliJ中有这样的功能,但您可以编写一个脚本来处理导出的文件。
编辑
此方法将使用从IntelliJ导出的文件打印枚举值。您可能需要修改它以处理错误等。
private static void printEnumClassesAndValues(String file) throws IOException { Files.lines(Path.of(file)) .filter(line -> !line.contains("java.lang")) .map(line -> { String[] tokens = line.replaceAll("[\\(\\),]", "").trim().split(" "); return String.format("%s.%s", tokens[1], tokens[0]); // package + class name }) .forEach(enumClass -> System.out.printf("%s: %s%n", enumClass, Arrays.toString(getEnumValues(enumClass)))); } private static Enum<?>[] getEnumValues(String enumClass) { try { Method m = Class.forName(enumClass).getDeclaredMethod("values"); return (Enum<?>[]) m.invoke(null); } catch (Exception ex) { throw new RuntimeException(ex); // log or handle otherwise } }
1条答案
按热度按时间6mw9ycah1#
是的,您可以使用类型层次结构视图并将条目导出到文件中。我使用eclipse快捷方式,我可以使用
F4
打开类型层次结构。只需要确保过滤Production
文件。使用Guava项目的示例:
至于获取每个枚举的所有值,我不认为在IntelliJ中有这样的功能,但您可以编写一个脚本来处理导出的文件。
编辑
此方法将使用从IntelliJ导出的文件打印枚举值。您可能需要修改它以处理错误等。