[英]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.