Предположим, у нас есть два объекта класса, таких как объекты 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()
Код: Выделить всё
fun getConfigObject(): Config? {
return when(state){
"one" -> remoteConfig ?: localConfig
"two" -> remoteConfig
"three" -> localConfig
}
}
Код: Выделить всё
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, если он не равен нулю, иначе localConfig. Но в этом случае, возможно, свойство title в RemoteConfig имеет значение NULL, и однако объект RemoteConfig не имеет значения NULL, но заголовок в нем имеет значение NULL и не должен быть возвращен обратно.
Как я могу решить эту проблему без повторения кода и следуя рекомендациям?
Я пробовал использовать отражение, но не смог понять, как оно решит мою проблему.
Подробнее здесь: https://stackoverflow.com/questions/793 ... le-objects
Мобильная версия