Я работаю с Google Cloud Endpoint для Java. И я создаю несколько конечных точек.
Вот один из них.
public User registerUser(@Named("lat") double lat, @Named("lng") double lng, @Nullable @Named("contactList") List<Long> contactList, User user){
Как видите, contactList помечен как @Nullable, иногда мне нужен этот параметр, а иногда нет. Все работает нормально, когда тестирую на API Explorer
После всего этого я создал клиентскую библиотеку для Android. И я использую вот так.
MyApi.Builder builder = new MyApi.Builder(AndroidHttp.newCompatibleTransport(), new JacksonFactory(), null);
MyApi service = builder.build();
service.account().registerUser(31.024937, 73.847913, user);
registerUser предоставляет только три аргумента. Если я хочу сдать contactList, как я могу это сделать? Нет возможности передать его в registerUser. Если я попытаюсь передать его, появится ошибка.
Наконец, я нашел ответ самому себе. Посмотрев некоторый код сгенерированной библиотеки, я обнаружил, что все параметры @Nullable не могут быть переданы в функцию, но установлены с помощью этой функции, проверьте код ниже для лучшего понимания.
service.account().registerUser(31.024937, 73.847913, user)
.setContactList(contactList).execute();
Созданная библиотека автоматически создает функцию для настройки параметров @Nullable, например, setContactList().