Skip to content

泛型替换和 lambda 参数的类型推断 #5

Open

Description

@1lck

#3 之后,和 JDT LS 在 Nacos 上 3×1500 个位置的对比里,剩下的差异几乎都要靠泛型推断:

  • 泛型返回值:list.get(i).split(...)、map.get(a).get(b)
  • lambda 参数:v -> v.getVersion()、items.forEach(item -> item.getName())、比较器里的 o1.getPriority()、ruoyi-vue-pro 的 MapUtils.findAndThen(map, key, v -> ...)
  • 要按泛型实参区分的重载:JsonUtils.toObj(restResult.getData(), new NacosTypeReference<...>() {})
  • 数组维度:buffer.write(key.getBytes(UTF_8)) 选成了 write(int)(类型去掉了 [])

需要索引保留成员类型里的泛型实参和类型参数,typeOfExpr 返回带实参的类型,并按函数式接口的参数类型推出 lambda 参数。验收:用 cmd/nav-bench 对比改动前后的命中率、延迟和内存,内存增量要写清楚。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions