AIDL + AutoValue Builder: класс абстрактный, не может быть создан - PullRequest
0 голосов
/ 25 марта 2020

Я пишу интерфейс AIDL для интерфейса слушателя, в котором один из методов получает созданный мной настраиваемый класс parcelable. Это выглядит примерно так:


interface ActiveSessionListener {

    /** called when active session changes
     * @param sessionInfo information about the new session
     */
    void onActiveSessionChanged(out SessionInfo sessionInfo);
}

Вот как выглядит класс SessionInfo:

@AutoValue
public abstract class SessionInfo implements Parcelable {

  public static Builder builder() {
    return new AutoValue_SessionInfo.Builder();
  }

  /** Builder for {@link SessionInfo}. */
  @AutoValue.Builder
  public abstract static class Builder {

    public abstract Builder setName(String artistName);
    ...other things
    public abstract SessionInfo build();
  }

  .. setters for all fields

Этот код при компиляции выдает эту ошибку:

path/to/ActiveSessionListener.java: error: SessionInfo is abstract; cannot be instantiated
          SessionInfo sessionInfo = new SessionInfo();

Похоже, что AIDL-компилятор пытается сгенерировать новый экземпляр SessionInfo, используя конструктор по умолчанию. Как мне сказать, чтобы использовать здесь строитель?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...