引用 Kotlin 中特定实例的方法

2024-04-13

在 Java 8 中,我们可以引用类实例的方法。这是一个例子

Function1<Integer, Object> ref = a::getItem;

a 是该类的一个实例Adapter有这个方法Object getItem(int i).

我们可以在 Kotlin 中做同样的事情吗?我尝试了相同的语法但没有成功。到目前为止,我只能创建一个扩展方法引用,如下所示:

val ref: Adapter.(Int) -> Any = Adapter::getItem

但这里我仍然需要一个实例Adapter来调用它。我看到的另一个替代方案是像这样定义 lambda:

val ref: (Int) -> Any = { a.getItem(it) }

从 Kotlin 1.1 开始,您可以使用绑定可调用引用 https://github.com/Kotlin/KEEP/blob/master/proposals/bound-callable-references.md要做到这一点:

val f = a::getItem
list.forEach(myObject::myMethod)

早期的 Kotlin 版本没有此功能,并且要求您每次都创建 lambda,除了这些简单的案例 https://stackoverflow.com/questions/42496032/kotlin-function-reference/42496375#42496375.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

引用 Kotlin 中特定实例的方法 的相关文章

  • Kotlin 中的枚举类对于 Android 来说是否像 Java 中那样“昂贵”?

    Are EnumKotlin 中的类对于 Android 来说 昂贵 就像 Java 一样 还可以用吗 IntDefs or StringDefs在科特林 当我将 Kotlin Enum 类反编译为 Java 类时 底层仍然使用了 Java
  • LazyColumn - Items 关键参数的用途?

    有人可以解释一下它的主要目的是什么吗 key LazyListScope 的 items itemsIndexed 函数内的参数 如果我们指定该参数 我们会得到什么或不会得到什么 我不确定我是否理解与此参数相关的官方文档 key 代表该项目
  • 从 DecorView@2da7146[MyActivity] 中找不到 ViewTreeLifecycleOwner

    从撰写更新后alpha 11 to alpha 12 or beta 01 每当我打开具有撰写视图的活动或片段时 我都会遇到此崩溃 我在用AppCompatActivity它实现了LifecycleOwner 所以这非常奇怪 java la
  • 理解 Python lambda

    我正在尝试理解一个使用龙格 库塔方法数值求解微分方程的Python程序 我已经开发了自己的解决方案 但正在寻找其他实现 我发现了几个 但这一个引起了我的兴趣 因为我很难理解 lambda 的工作原理 这是代码 def RK4 f retur
  • ASP.NET MVC 3 Razor DisplayFor 委托

    我收到此错误 模板只能与字段访问 属性访问 一维数组索引或单参数自定义索引器表达式一起使用 这是我的代码 自定义 HTML 帮助程序 包装 DisplayFor 以便我可以选择模板 public static string DisplayL
  • 在viewpager2中禁用动画

    我有 viewpager2 和扩展 FragmentStateAdapter 的适配器 我希望用户仅通过单击选项卡布局即可转到另一个页面 我已禁用此 viewpager2 的用户输入 但是当我单击选项卡时 有页面之间快速滑动的动画 但我只想
  • Java 8 Lambda 表达式编译成什么? [复制]

    这个问题在这里已经有答案了 考虑以下 Java 8 片段 public static void main String args List
  • Expression.Property 的 Expression.Convert 类型

    我正在尝试转换参数表达式 但在转换为值类型时遇到问题 下面是我的代码示例 public static MemberExpression ConvertToType ParameterExpression sourceParameter Pr
  • 更新到 Kotlin 1.3.30 后出现“未解析的引用:Parcelize”

    我使用 Kotlin 1 3 21 很长时间了kotlin android extensions插件长期处于实验模式 今天我通过升级版本切换到 Kotlin 1 3 30 现在无论我使用什么 Parcelize注释我看到错误 Unresol
  • Rails:named_scope、lambda 和块

    我认为以下两个是等效的 named scope admin lambda company id conditions gt company id company id named scope admin lambda do company
  • 从表达式函数获取父属性

    假设我有以下课程 public class Model public AnotherModel InnerModel get set public class AnotherModel public String Value get set
  • 如何将依赖 ThreadLocal 的代码与 Kotlin 协程一起使用

    一些 JVM 框架使用ThreadLocal存储应用程序的调用上下文 例如SLF4j MDC https logback qos ch manual mdc html 事务管理器 安全管理器等 然而 Kotlin 协程是在不同的线程上调度的
  • 什么是拉姆达?

    有人可以很好地描述什么是 Lambda 吗 我们为它们设置了一个标签 它们涉及 C 问题的秘密 但我还没有找到一个很好的定义和解释来解释它们是什么 闭包 lambda 和匿名函数不一定是同一件事 匿名函数是任何没有 或者至少不需要 自己名称
  • Kotlin super.finalize()

    当迁移到Kotlin from Java我遇到了一个问题 我覆盖了Object s finalize method Override protected void finalize throws Throwable stopTimer su
  • 是否可以在 Java 8 中调试 Lambda

    我刚刚开始使用 Java 8 Lambda 我注意到我无法在 NetBeans IDE 中调试它们 如果我尝试将断点附加到以下代码 我会得到一个变量断点 这绝对不是我想要的 private EventListener myListener
  • 如何在 emacs 中自动回答是或否

    I binded function semantic symref to key C c C r like this global set key kbd C c C r semantic symref everytime I presse
  • 获取 IntelliJ Kotlin 插件和 gradle 进行匹配

    我正在尝试 IntelliJ 16 早期访问版本 但我的项目无法编译 Error 16 17 Kotlin Unresolved reference substring note this may be caused by the fact
  • 为什么不能调用带有 auto& 参数的 const mutable lambda?

    include
  • Linq.Select() 中的嵌套表达式方法调用

    I use Select i gt new T 每次手动点击数据库后将我的实体对象转换为 DTO 对象 以下是一些示例实体和 DTOS 用户实体 public partial class User public int Id get set
  • 尝试在空对象引用上调用虚拟方法 -> 解析?

    我尝试使用一个按钮从一个主要活动切换到另一个活动 但是当我尝试运行该应用程序时 它在单击该应用程序后立即自行关闭 我在命令中发现错误消息 Unable to start activity ComponentInfo fr amseu mys

随机推荐