Intellij Idea 有没有办法从IntelliJ中的项目中获取所有枚举类及其各自的值?

2nbm6dog  于 2023-10-15  发布在  其他
关注(0)|答案(1)|浏览(221)

我需要在IntelliJ的项目中创建一个声明为枚举的类列表,并在每个类中列出相应的值。是否有任何自动化的方法来完成这项任务,因为它是一个相当大的项目,有数百次出现。

6mw9ycah

6mw9ycah1#

是的,您可以使用类型层次结构视图并将条目导出到文件中。我使用eclipse快捷方式,我可以使用F4打开类型层次结构。只需要确保过滤Production文件。
使用Guava项目的示例:

至于获取每个枚举的所有值,我不认为在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
        }
    }

相关问题