使用 Kotlin 泛型时 T 和 Any 有什么区别?

Анд*_*нов 0 generics kotlin

有什么不同?

有什么区别:

class SomeClass<T>(var param: T)
Run Code Online (Sandbox Code Playgroud)

class SomeClass<Any>(var param: Any)
Run Code Online (Sandbox Code Playgroud)

他们之间有什么区别吗?看起来这些类的工作方式是相同的。

Cil*_*ing 5

是的,它们基本上是相同的。

声明泛型类的语法是:

class ClassName<GenericClassType>
Run Code Online (Sandbox Code Playgroud)

因此,就您而言, 和T都是Any标识符。但是,第一个 ( T) 看起来是更好的选择,因为Any它隐藏了一种 Kotlin 类型。

kotlin.Any参考: https: //kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/)。

  • @АндрейБаранов 类型 [`kotlin.Any`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/)。Cililing 是对的,在这种情况下,“Any”被视为标识符(对于类型),而不是类名,即使存在一个具有该名称的类 - 这使得代码对任何阅读它的人都极具误导性!尽管也许“阴影”是比“冲突”更准确的术语。 (5认同)