Как получить значение вложенного свойства среди нескольких объектов?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как получить значение вложенного свойства среди нескольких объектов?

Сообщение Anonymous »

У меня есть вопрос о получении необходимых значений среди нескольких объектов, и в следующем примере я пытаюсь объяснить его в простой форме моей основной проблемы.
Предположим, у нас есть два объекта класса, таких как объекты RemoteConfig и localConfig, как следующий код:

Код: Выделить всё

    data class Config(val service : Service?, val section : Section?)

data class Service(val name : String?, val value : String?)

data class Section(val id : Int?, val title : String?)

val remoteConfig : Config? = Config()
val localConfig : Config? = Config()
Оба объекта инициализируются и удерживаются в одной из функций репозитория getConfigobject () , которая отвечает за обработку настройки. Настройка предназначена для обработки стратегии использования этих объектов с тремя состояниями, такими как «одно», «два» и «три», которая контролирует использование этих объектов. Состояние одно означает «если объект remoteConfig инициализирован, а не нулевой, затем используйте его, иначе используйте объект LocalConfig». Состояние два означает «Использовать объект remoteconfig в любом случае», а состояние три означает «Использовать объект LocalConfig в любом случае». < /P>

Код: Выделить всё

    fun getConfigObject(): Config? {
return when(state){
"one" -> remoteConfig ?: localConfig

"two" -> remoteConfig

"three" -> localConfig
}
}
В моем приложении есть множество классов, в которых есть некоторые функции, использующие функцию getConfigObject для извлечения требуемых значений из предпочтительного объекта на основе настроек и использования. обязательное поле, как показано ниже:

Код: Выделить всё

    fun getServiceName(): String? {
return repository.getConfigFile()?.service?.name
}
fun getServiceValue(): String? {
return repository.getConfigFile()?.service?.value
}
fun getSectionId(): Int? {
return repository.getConfigFile()?.section?.id
}
fun getSectionTitle(): String? {
return repository.getConfigFile()?.section?.title
}
Учитывайте тот факт, что объекты конфигурации инициализируются из разных источников (например, веб-сервиса и встроенных файловых ресурсов). Между их значениями есть некоторые различия, и в некоторых случаях свойства объекта RemoteConfig имеют значение null. Как уже упоминалось, в первом состоянии мы предпочитаем получать требуемое значение из объекта RemoteConfig, и если объект или требуемое значение в нем имеют значение NULL, то необходимо использовать свойство объекта localConfig.
Итак, моя проблема в том, что Я не могу справиться с этими двумя ситуациями вместе. Как мне реализовать настройку, чтобы в ней учитывались требуемые свойства. Например, мне нужно значение заголовка раздела. Итак, сначала мне нужно вызвать функцию репозитория, чтобы получить файл конфигурации, и он вернет RemoteConfig, если он не равен нулю, иначе localConfig. Но в этом случае, возможно, свойство title в RemoteConfig имеет значение NULL, и однако объект RemoteConfig не имеет значения NULL, но заголовок в нем имеет значение NULL и не должен быть возвращен обратно.
Как я могу решить эту проблему без повторения кода и следуя рекомендациям?
Я пробовал использовать отражение, но не смог понять, как оно решит мою проблему.

Подробнее здесь: https://stackoverflow.com/questions/793 ... le-objects
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»