Версия автозначения: 1.3
Учитывая следующий класс:
@AutoValue
public abstract class SimpleClass<T> {
public static <E> SimpleClass<E> create(Set<? extends E> someField) {
return SimpleClass.<E>builder().someField(someField).build();
}
public static <E> Builder<E> builder() {
return new AutoValue_SimpleClass.Builder<E>();
}
public abstract ImmutableSet<T> someField();
@AutoValue.Builder
public abstract static class Builder<T> {
public abstract Builder<T> someField(Set<? extends T> someField);
public abstract SimpleClass<T> build();
}
}
Когда автоматический сборщик генерирует исходники для вышеуказанного класса, он генерирует что-то вроде:
final class AutoValue_SimpleClass<T> extends $AutoValue_SimpleClass<T> {
AutoValue_SimpleClass(ImmutableSet<T> someField) {
super(someField);
}
static SimpleClass.Builder<E> testBuilder() {
return builder();
}
}
Обратите внимание, что общий метод testBuilder
генерируется неправильно, потому что ему нужно <E>
после static
.
Вот что должно было получиться:
static <E> SimpleClass.Builder<E> testBuilder() {
return builder();
}
Есть ли способ не генерировать этот метод testBuilder
или способ гарантировать, что AutoValue
генерирует правильные источники?
Спасибо.
РЕДАКТИРОВАНИЕ: Только что обновился до версии 1.4, и все равно происходит то же самое
Проблема с GH: https://github.com/google/auto/issues/511
public abstract ImmutableSet<T> someField();
сT
вместоE
?E
в этот момент не входит в область действия. - person Louis Wasserman   schedule 03.08.2017