Kotlin 泛型、类型别名、注解与反射详解
1. 星投影(Star Projections)
星投影用 * 表示,用于表明参数类型可以是其边界内的任何类型。由于 Kotlin 仅支持类型参数的上界,这意味着类型参数可以是相应边界类型的任何子类型。
1.1 示例
// 可以是任何列表,因为其元素类型仅受 Any? 限制
val anyList: List<*> = listOf(1, 2, 3)
// 可以是任何可与自身比较的对象(由于 T : Comparable<T> 边界)
val anyComparable: Comparable<*> = "abcde"
1.2 与 Java 的比较
星投影可被视为 Java 的 ? 通配符在 Kotlin 中的对应物,所以 Kotlin 中的 TreeNode<*> 与 Java 中的 TreeNode<?> 基本含义相同。
1.3 类型检查
星投影类型可用于类型检查操作:
val any: Any = ""
any is TreeNode<*>
由于 TreeNode 的类型参数受 Any? 限制,
超级会员免费看
订阅专栏 解锁全文
2003

被折叠的 条评论
为什么被折叠?



