ClassNotFoundException Class.forName () в Enum - PullRequest
1 голос
/ 14 октября 2019

У меня есть enum и я пытаюсь получить другой класс с Class.forName(example)

. Однако он отображает ClassNotFoundException . У меня вопрос такой, как я могу выбросить исключение, чтобы решить это?

Пример кода

enum Example {
  PLUS("Plus", new Class<?>[]{Class.forName("com.directory.File")})
}

Ответы [ 3 ]

2 голосов
/ 14 октября 2019

Вы можете вообще не генерировать исключение из перечислителя.

enum Example {
  PLUS("Plus", new String[]{"com.directory.File"});
  ...
}

public class ExampleFactory {
  List<Class<?>> getClassesForExample( Example example ) throws ClassNotFoundException {
      // Build list of classes from class names in enumerator.
      ... 
  }
}
0 голосов
/ 14 октября 2019

Вы можете поймать исключение следующим образом:

enum Example {   
        PLUS("Plus", Example("com.directory.file"));

        Example (String plus, Class<?>[] example) { }

        private static Class<?>[] Example (String className){
            try {
                return new Class<?>[]{Class.forName(className)};
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
            return null;
        }
}
0 голосов
/ 14 октября 2019

Используйте try-catch:

try {
   Class<?> clazz = Class.forName(example);
   ...
} catch (ClassNotFoundException ex) {
   ... 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...