25 Matching Annotations
  1. Dec 2022
  2. Aug 2022
    1. Function<*, String> means Function<in Nothing, String>.Function<Int, *> means Function<Int, out Any?>.Function<*, *> means Function<in Nothing, out Any?>.

      星投影

    1. 这是因为它是 private 的,如果你把 private 关键字删掉的话,上面的代码就会报错了。

      private 没有getter

    2. 型变(Variance)

      表明泛型类型对象在初始化之后还可以型变成其他相关对象

    3. 不变性

      fun <T:Animal> foo(list: MutableList<T>) {

      list.add(Animal("1",1) as T)//为何这里需要as转换,因为T在运行时才知道具体的类型
      
      val animal: Animal = list[0] // 取出的Cat对象
      

      }

    4. 对于 contains、indexOf 这样的方法,它们虽然以 E 作为参数类型,但本质上并没有产生写入的行为。所以,我们用 out 修饰 E 并不会带来实际的问题
  3. Apr 2020
    1. The most commonly used type parameter names are:E – Element (used extensively by the Java Collections Framework)K – KeyN – NumberT – TypeV – ValueS,U,V etc. – 2nd, 3rd, 4th types

      常见的泛型类型命名