
Kotlin 中 isEmpty 是函数而非属性,必须使用 isEmpty() 形式调用;若误写为 isEmpty(无括号),编译器会报“unresolved reference”并提示“function invocation expected”。
kotlin 中 `isempty` 是函数而非属性,必须使用 `isempty()` 形式调用;若误写为 `isempty`(无括号),编译器会报“unresolved reference”并提示“function invocation expected”。
在 Kotlin 中,isEmpty() 是标准库为集合(如 List、Set)、字符串(String)及可空类型(通过安全调用)提供的扩展函数,不是属性(property)。因此,以下写法是错误的:
val department: List<string> = listOf("HR", "IT")
if (department.isEmpty) { // ❌ 编译错误:Expected function invocation 'isEmpty()'
println("No departments")
}</string>
正确写法必须显式加上括号,表示调用函数:
if (department.isEmpty()) { // ✅ 正确:调用 isEmpty() 函数
println("No departments")
}
⚠️ 常见误区提醒:
- 不要与 Java 的 isEmpty 属性(如某些自定义 Bean)或 Kotlin 中 isBlank()(String 的扩展属性)混淆;
- isBlank() 和 isNullOrEmpty() 是 String 的扩展属性,可省略括号(如 str.isBlank),但 isEmpty() 在所有标准类型中均为函数;
- 若 department 类型为 String?,可安全使用 department?.isEmpty(),但仍需括号。
✅ 最佳实践示例:
// List 检查
val departments: List<string> = emptyList()
if (departments.isEmpty()) { /* ... */ }
// String 检查
val name: String? = null
if (name?.isEmpty() == true) { /* name 存在且为空字符串 */ }
// 安全+简洁写法(推荐)
if (departments.isNotEmpty()) { /* 非空时处理 */ }</string>
总结:Kotlin 严格区分属性访问(. + 名称)与函数调用(. + 名称 + ())。遇到 unresolved reference 且提示 “function invocation expected”,请优先检查是否遗漏了方法调用所需的括号——这不是环境或版本问题,而是语法规范要求。











