检查对象中的一个字段在kotlin中是否为空
我有一个包含许多字段的对象。例如: 豪斯检查对象中的一个字段在kotlin中是否为空,kotlin,Kotlin,我有一个包含许多字段的对象。例如: 豪斯 -windows -门 -管道 等等 我正在寻找一种优雅的方法来检查其中一个元素是否为null。 如果(windows!=null | | | doors!=null | | pipes…)您可以使用 fun main(args:Array){ var myObj=myObj() myObj.house=“house” myObj.windows=“windows” 打印(列表(myObj.house、myObj.windows、myObj.doors.
-windows
-门
-管道
等等 我正在寻找一种优雅的方法来检查其中一个元素是否为null。 如果(windows!=null | | | doors!=null | | pipes…)您可以使用
fun main(args:Array){
var myObj=myObj()
myObj.house=“house”
myObj.windows=“windows”
打印(列表(myObj.house、myObj.windows、myObj.doors.filterNotNull());
//印刷品:[房子,窗户]
}
MyObj类{
变量:字符串?=null
变量窗口:字符串?=null
变量门:Int?=null
}
您可以使用
fun main(args:Array){
var myObj=myObj()
myObj.house=“house”
myObj.windows=“windows”
打印(列表(myObj.house、myObj.windows、myObj.doors.filterNotNull());
//印刷品:[房子,窗户]
}
MyObj类{
变量:字符串?=null
变量窗口:字符串?=null
变量门:Int?=null
}
您可以使用,例如
如果您不喜欢,也可以使用,例如:
对于您目前的状况,任何
-变体可能是最好的<如果您希望确保所有条目都或没有条目符合特定条件,例如all{it!=null}
或none{it==null}
,则代码>全部和无
获胜
或者,如果上述各项都不适合您,请提供您自己的功能,例如:
fun <T> anyNotNull(vararg elements : T) = elements.any { it != null }
你可以用
如果您不喜欢,也可以使用,例如:
对于您目前的状况,任何
-变体可能是最好的<如果您希望确保所有条目都或没有条目符合特定条件,例如all{it!=null}
或none{it==null}
,则代码>全部和无
获胜
或者,如果上述各项都不适合您,请提供您自己的功能,例如:
fun <T> anyNotNull(vararg elements : T) = elements.any { it != null }
假设您不想使用反射,您可以构建一个
列表
,并在其上使用:
假设您不想使用反射,您可以构建一个
列表
,并在其上使用:
如果(x!=null)x else y,则可以使用作为缩写的运算符:
if( null != windows ?: doors ?: pipes )
这将遍历每个字段并返回第一个非空字段,如果链中的最后一个元素为空,则返回null
您应该尽量避免为这种简单的比较分配整个列表/数组。如果(x!=null)x else y
,您可以使用操作符作为的缩写:
if( null != windows ?: doors ?: pipes )
这将遍历每个字段并返回第一个非空字段,如果链中的最后一个元素为空,则返回null
您应该尽量避免为这种简单的比较分配整个列表/数组。val houseArray=!列表(“窗”、“门”、“管道”).isNullOrEmpty()val houseArray=!listOf(“窗”、“门”、“管道”).isNullOrEmpty()为什么只有在至少有一个非null值时才要输入条件?之后要做什么?为什么只有在至少有一个非空值时才要输入条件?之后你要做什么?请在发布代码时提供解释,并在代码的开头和结尾使用``格式化代码(这些``应该在它们自己的行上)。请在发布代码时提供解释,并在代码的开头和结尾使用``格式化代码(这些``应该在它们自己的行上)
if (anyNotNull(windows, doors, pipes)) {
val anyElementNull = listOf(window, doors, pipes).any { it != null }
if( null != windows ?: doors ?: pipes )