Я пишу интерфейс 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, используя конструктор по умолчанию. Как мне сказать, чтобы использовать здесь строитель?