6 Matching Annotations
  1. Aug 2022
    1. It will work if the @RabbitListener is defined at the method level instead of the class level because we can infer the generic type from the listener method parameter.

      @rabbitlistener在方法级别时,类型推导有用

    1. val parameterAnnotations = method.parameterAnnotations for (i in parameterAnnotations.indices) { for (parameterAnnotation in parameterAnnotations[i]) { // ② if (parameterAnnotation is Field) { val key = parameterAnnotation.value val value = args[i].toString() if (!url.contains("?")) { // ③ url += "?$key=$value" } else { // ④ url += "&$key=$value" } } }

      为什么是这样的一个结构

    1. 型变(Variance)

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

    2. 不变性

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

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

      }

    3. 对于 contains、indexOf 这样的方法,它们虽然以 E 作为参数类型,但本质上并没有产生写入的行为。所以,我们用 out 修饰 E 并不会带来实际的问题