Создание переменной stati c в интерфейсе generi c, который возвращает указанный интерфейс (или, по крайней мере, в преобразователе в Spring) - PullRequest
0 голосов
/ 13 февраля 2020

В настоящее время у меня есть код, который выглядит следующим образом:

@Mapper
public interface UserMapper extends BasicMapper<User, UserDto> {
    UserMapper INSTANCE = Mappers.getMapper(UserMapper.class);
}

и универсальный c интерфейс, который неудивительно выглядит так:

@Mapper
public interface BasicMapper<Entity, Dto extends AbstractDto> {
    // This is something I'd like to have, but it doesn't work :(
    // BasicMapper<Entity, Dto> INSTANCE = Mappers.getMapper(BasicMapper<Entity, Dto>.getClass());
    // (Skipped ordinary methods...)
}

Это работает, но я пытаюсь в pu sh stati c переменная INSTANCE в общий c BasicMapper интерфейс. Возможно ли это или нет, как лучше обойтись? Я бы предпочел общий ответ c, который не зависит от Spring и аннотаций, но если это невозможно, я остановлюсь на лучшем обходном пути, который работает с String и аннотацией @Mapper.

1 Ответ

0 голосов
/ 13 февраля 2020

Обычно я решаю подобные проблемы, используя ФАБРИКУ

public static final User_Mapper createUserMapper() {
  User_Mapper um = new User_Mapper();
  um.INSTANCE = appers.getMapper(UserMapper.class);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...