簡體   English   中英

Kotlin處理變量返回函數的類型

[英]kotlin handling variable return type of function

假設我有多個DTO,例如:

data class ActionDetailDTO(
    @JsonProperty("priority")
    val priority: String,
    @JsonProperty("reason")
    val reason: String
)

data class IntroDTO(
    @JsonProperty("name")
    val name: String,
    @JsonProperty("number")
    val number: String
)

當我解析它們時,我將這些dto的json存儲為字符串:

    fun parseStringBasedOnType(action: SomeDTOType) :Any{
    val obj = when (action.actionType){
            "CREATED" -> objectMapper.readValue(action.actionDetails, ActionDetailDTO::class.java)
            "INTRO" -> objectMapper.readValue(action.actionDetails, IntroDTO::class.java)

            else -> "hh"
        }
        return obj
     }

所以:

val nn = parseStringBasedOnType(SomeActionObject) //type: CREATED
if(nn.actionType == "CREATED"){
    println(nn.reason)
}

這顯然行不通,如何處理?

您可以使用actionType方法定義公共接口,也可以actionType值:

if(nn is ActionDetailDTO) {
    println(nn.reason)
}

或者使用when ,如果你打算做一些對其他類型來說:

when(nn) {
  is ActionDetailDTO -> println(nn.reason)
  is IntroDTO -> println(nn.number)
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM