我有这种方法
private fun checkRoomIdAndFindCinemaAndCheckIfRoomExists(paramRoomId: String?, paramCinemaId: String?, roomExists: Boolean?) : Array<Any> {
val roomId = ValidationHandler.validateId(paramRoomId, "room id")
val cinema = cinemaService.getCinemaById(paramCinemaId)
val roomExists = roomRepository.existsByIdAndCinemaId(roomId, paramCinemaId!!.toLong())
return arrayOf(roomId, cinema, roomExists)
}
我在这里想要做的是将
roomId
作为Long,cinema
作为对象以及roomExists
作为 bool(boolean) 值添加到数组中,并且返回类型应该是该数组。我怎样才能做到这一点?后来我想从另一种方法访问这些。
最佳答案
我建议使用惯用的Kotlin代码,而不是已经建议的代码。当您要从一个函数返回多个值时,如果足够,您应该利用数据函数或现有的类,例如Pair
或Triple
。在这种情况下,Triple
可帮助您:
private fun checkRoomIdAndFindCinemaAndCheckIfRoomExists(
paramRoomId: String?,
paramCinemaId: String?,
roomExists: Boolean?
): Triple<Long, Any, Boolean.Companion> {
//TODO
return Triple(roomId, cinema, roomExists)
}
好消息是您可以确定类型,而不必从不安全的
Array<Any>
中强制转换任何内容。此外,数据类使您可以利用分解,如下所示:val (roomId, cinema, roomExists) =
checkRoomIdAndFindCinemaAndCheckIfRoomExists("id1", "id2", true)
关于arrays - 如何在Kotlin中将对象, bool 值和long值添加到数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53574983/