Член Enum null в библиотеке Adwords - PullRequest
1 голос
/ 08 марта 2019

Я использую библиотеку Google Adwords. Для создания учетных данных предусмотрен шаблон конструктора:

new OfflineCredentials.Builder()
                      .forApi(OfflineCredentials.Api.ADWORDS)
                      .fromFile("D:\...\ads.properties")
                      .build()

Этот вызов вызывает исключение нулевого указателя в моем приложении, в частности, аргумент для метода .forApi() равен нулю. Этот объект является членом перечисления , определенным таким образом :

 public static enum Api implements OAuthConfig {
  ADWORDS("api.adwords.", "https://www.googleapis.com/auth/adwords"),
  AD_MANAGER("api.admanager.", "https://www.googleapis.com/auth/dfp");

  private final String propKeyPrefix;
  private final String scope;

  private Api(String propKeyPrefix, String scope) {
    this.propKeyPrefix =
        Preconditions.checkNotNull(propKeyPrefix, "Null property key prefix for: %s", this);
    this.scope = Preconditions.checkNotNull(scope, "Null scope for: %s", this);
  }

Теперь, как член enum может быть нулевым? И что мне с этим делать?

Это проблема с загрузкой классов? Если это поможет, это приложение Spring Boot.

1 Ответ

0 голосов
/ 11 марта 2019

Нашел это. Preconditions.checkNotNull выбросил NoSuchMethodError из-за конфликтующих версий. Это не позволило элементу enum быть должным образом инициализирован, оставаясь нулевым и вызывая NPE по очереди.

TIL: когда элемент enum имеет значение null, в его конструкторе правильно произошла ошибка.

...