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

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

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

6mw9ycah

6mw9ycah1#

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

至于获取每个枚举的所有值,我不认为在IntelliJ中有这样的功能,但您可以编写一个脚本来处理导出的文件。

编辑

此方法将使用从IntelliJ导出的文件打印枚举值。您可能需要修改它以处理错误等。

  1. private static void printEnumClassesAndValues(String file) throws IOException {
  2. Files.lines(Path.of(file))
  3. .filter(line -> !line.contains("java.lang"))
  4. .map(line -> {
  5. String[] tokens = line.replaceAll("[\\(\\),]", "").trim().split(" ");
  6. return String.format("%s.%s", tokens[1], tokens[0]); // package + class name
  7. })
  8. .forEach(enumClass -> System.out.printf("%s: %s%n", enumClass, Arrays.toString(getEnumValues(enumClass))));
  9. }
  10. private static Enum<?>[] getEnumValues(String enumClass) {
  11. try {
  12. Method m = Class.forName(enumClass).getDeclaredMethod("values");
  13. return (Enum<?>[]) m.invoke(null);
  14. } catch (Exception ex) {
  15. throw new RuntimeException(ex); // log or handle otherwise
  16. }
  17. }
展开查看全部

相关问题