面试题答案
一键面试类型推断
- 优点:
- 代码简洁,减少冗余。例如
val number = 42
,编译器可自动推断number
为Int
类型,无需显式声明。 - 提高开发效率,开发者无需每次都写出具体类型,使代码更易读,将注意力集中在业务逻辑上。
- 代码简洁,减少冗余。例如
- 缺点:
- 可能降低代码可读性,对于不熟悉上下文的人,难以快速明确变量类型。比如
val result = someComplexFunction()
,不看someComplexFunction
的实现难以知道result
类型。 - 在复杂的泛型场景下,类型推断可能不准确,导致编译错误。
- 可能降低代码可读性,对于不熟悉上下文的人,难以快速明确变量类型。比如
- 适合场景:
- 简单的局部变量定义,如
val name = "John"
,变量类型很明显,无需显式声明。 - 链式调用场景,如
val length = "Hello".length
,类型推断可使代码更简洁流畅。
- 简单的局部变量定义,如
显式类型声明
- 优点:
- 增强代码可读性,明确变量类型,使代码意图更清晰。例如
val age: Int = 30
,一眼就能知道age
是Int
类型。 - 方便代码维护和重构,明确类型可减少因类型变化导致的错误。在大型项目中,团队成员能快速了解变量类型。
- 增强代码可读性,明确变量类型,使代码意图更清晰。例如
- 缺点:
- 增加代码冗余,尤其是在类型已经很明显的情况下,显式声明会使代码看起来更繁琐。如
val num: Int = 10
,num
类型已很明显。 - 降低代码编写速度,相比类型推断需要多输入类型信息。
- 增加代码冗余,尤其是在类型已经很明显的情况下,显式声明会使代码看起来更繁琐。如
- 适合场景:
- 函数返回值类型,明确返回值类型能让调用者清楚知道期望的返回类型,如
fun getNumber(): Int { return 42 }
。 - 复杂的泛型类型,显示声明能避免类型推断错误,例如
val list: List<Map<String, Any>> = mutableListOf()
。
- 函数返回值类型,明确返回值类型能让调用者清楚知道期望的返回类型,如