Как я могу создать класс AutoValue с дженериками?

Я хотел бы иметь класс данных, использующий AutoValue, и одно из свойств является общим, интересно, что я делаю неправильно?

public abstract class Data<T> {

    public static <T> Data createData(T value, Integer index) {
        return new AutoValue_Data<T>(value, index);
    }

    @NotNull
    public abstract T value();

    @NotNull
    public abstract Integer index();
}

person Artur A    schedule 19.12.2020    source источник


Ответы (2)


Ваш код выглядит так, как будто он должен работать, с одной строкой, которая должна исправить предупреждение:

public static <T> Data createData(T value, Integer index) {

должно быть

public static <T> Data<T> createData(T value, Integer index) {
person Louis Wasserman    schedule 19.12.2020

Вы забыли общий T после Data, ваш код должен быть:

public abstract class Data<T> {

    public static <T> Data <T> createData(T value, Integer index) {
        return new AutoValue_Data<T>(value, index);
    }

    @NotNull
    public abstract T value();

    @NotNull
    public abstract Integer index();
}
person Chiara Tumminelli    schedule 20.12.2020