У меня следующая структура класса:
class ExampleResponse(
@SerializedName("status")
val status: String
)
Я создаю экземпляр этого класса с помощью отражения:
fun convert(typeAdapterFactory: TypeAdapterFactory, gson: Gson): Optional<*> {
return try {
val genericTypeClassName = "com.example.package.ExampleResponse"
val genericClass = Class.forName(genericTypeClassName)
val genericTypeAdapter = gson.getDelegateAdapter(typeAdapterFactory, TypeToken.get(genericClass))
val response = genericTypeAdapter.fromJson("{}")
Optional.of(response)
} catch (e: Exception) {
Optional.empty<Any>()
}
}
Я жду, что в строке genericTypeAdapter.fromJson("{}")
он выбросит исключение, потому что статус будет нулевым. Но я получаю экземпляр ExampleResponse с нулевым полем статуса. Я хочу вернуть Optional.empty (), если статус равен нулю. Как я могу этого добиться, не проверяя поля? (проверка поля на ненулевое значение недопустима, потому что настоящая функция универсальна, и я не знаю, какой класс я здесь получу).