如何在 android kotlin 的单个函数中处理不同的输入类型和单个输出类型

How to handle different input type and single output type in a single function in android kotlin

提问人:Nikitha 提问时间:6/30/2023 更新时间:6/30/2023 访问量:29

问:

我有两个枚举类和数据类,如下所示:

名称Enum.kt

enum class NamesEnum(
    val option : String
) {
    AAkASH("Aakash Gupta"),
    ADITI("Aditi Deshpande")
}

StateEnum.kt (英语)

enum class StateEnum(
    val option : String
) {
    KAR("Karnataka"),
    MAH("Maharashtra")
}

学生数据.kt


data class StudentData(
    var student1: String = "",
    var student2: String = "",
    var state1: String = "",
    var state2: String = "",
   
){
    companion object{
        private var EMPTY_OBJECT: StudentData? = null
        fun getInstance(): StudentData? {
            if (EMPTY_OBJECT == null) EMPTY_OBJECT = StudentData()
            return EMPTY_OBJECT
        }
        fun clearReference(){
            EMPTY_OBJECT = null
        }
    }
}

我必须遍历每个枚举类并更新数据类中的数据:


fun updateData() : List<String>
{
  val list = NamesEnum.values()
        val nameList = ArrayList<String>()
        for (item in list){
            nameList.add(item.option)
        }
        return optionList
}

我想要与 updateData() 函数相同的功能,但不重复每个 Enum 类的逻辑。 我必须选择哪种设计模式来实现这一点?

Android 输入 设计模式

评论


答:

1赞 zaid khan 6/30/2023 #1

您可以使用字符串列表而不是枚举,并将该列表直接存储到数据类中


val namesList : List<String> = listOf("Aakash","Aditi")
val statesList : List<String> = listOf("Karnataka","Maharshtra")

data class StudentData(
    val students: List<String> = emptyList(),
    val states: List<String> = emptyList(),
 
){
    companion object{
        private var EMPTY_OBJECT: StudentData? = null
        fun getInstance(): StudentData? {
            if (EMPTY_OBJECT == null) EMPTY_OBJECT = StudentData()
            return EMPTY_OBJECT
        }
        fun clearReference(){
            EMPTY_OBJECT = null
        }
    }
}




fun updateData(students:List<String>,states:List<String>) : StudentData
{
       
        return StudentData(students,sates)
}

评论

0赞 Nikitha 7/3/2023
谢谢你的建议。但是我不想将字符串保留在列表中,我希望它们作为枚举,因为我有许多这样的枚举要为单个操作进行处理