请教,把这段 Java 的代码转为 Kotlin 的

EDDGA 2022-05-10 11:33:56

如题。看起来是Java lumbda,可是 idea 转 kotlin 和自己转都很多错误,请教正确的转换写法:

public interface SheepShearCallback {
 
    Event<SheepShearCallback> EVENT = EventFactory.createArrayBacked(SheepShearCallback.class,
        (listeners) -> (player, sheep) -> {
            for (SheepShearCallback listener : listeners) {
                ActionResult result = listener.interact(player, sheep);
 
                if(result != ActionResult.PASS) {
                    return result;
                }
            }
 
        return ActionResult.PASS;
    });
 
    ActionResult interact(PlayerEntity player, SheepEntity sheep);
}

 

...全文
195 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
wresource 版主 2022-05-15
  • 打赏
  • 举报
回复

首先看看相关包是否导入成功,这边转换之后发现没有相关的包,语法上应该idea的转换没有多大问题

interface SheepShearCallback {
        fun interact(player: PlayerEntity?, sheep: SheepEntity?): ActionResult

        companion object {
            val EVENT: Event<SheepShearCallback> = EventFactory.createArrayBacked(
                SheepShearCallback::class.java,
                { listeners ->
                    label@{ player, sheep ->
                        for (listener in listeners) {
                            val result: ActionResult = listener.interact(player, sheep)
                            if (result !== ActionResult.PASS) {
                                return@label result
                            }
                        }
                        ActionResult.PASS
                    }
                })
        }
    }

【为什么学习Kotlin?】 Google正式宣布Kotlin为Android开发的首选语言,这使得其成为除官方平台支持的Java之外的唯一语言。自2016年发布1.0版以来,Kotlin一直在稳定增长。随着被Netflix、Uber、Pinterest和Trello等公司的积极应用和推荐,可以预期Kotlin未来的市场将保持稳定增长。Kotlin被设计为一种工业级的面向对象的语言,并且是比Java更好的语言,但却可以与Java代码完全互操作,这一特点也能够帮助开发者可以更自然的从Java迁移到Kotlin。不可否认,Kotlin是近一段时间以来最令人激动的新语言之一。其实用性和互操作性让Kotlin成为许多Java开发人员更容易过渡学习的语言之一。但是,更多想要了解和学习Kotlin的学习者可能并没有Java开发背景。为此在本课程中,我们将从头开始研究Kotlin,涵盖想要扎实了解Kotlin所必需的各个主题知识点。课程中,我们将介绍语言的基础知识,并深入探讨一些棘手的学习问题。诸如构建和测试,泛型和扩展功能之类的主题。我们甚至研究一下Kotlin是如何帮助您编写自己的DSL。我们为此还建立了一套工具,可帮助您成为最有生产力同时最快乐的Kotlin开发人员。 【课程亮点】 1、课程涵盖基础框架、基础要点、高阶特性、灵活应用全部知识体系2、Kotlin是比Java更好的语言,但却可以与Java代码完全互操作3、实用性和互操作性让Kotlin成为许多Java开发人员更容易过渡学习的语言之一【讲师介绍】  Justin Lee(贾斯汀·李)—— Red Hat红帽首席软件工程师Justin Lee(贾斯汀·李)是Java Champion和Kotlin圈子中的最受欢迎的专家之一。从1996年开始,他就一直使用Java进行编程,几乎在应用程序堆栈的每个级别上都有过开发经历。从数据库驱动程序一直到应用程序服务器和前端接口。他一直都是JavaKotlin的拥护者,曾多次在美国和欧洲的技术大会及用户组中发表过精彩演讲。同时,他更是一位活跃的开源社区成员,在任何时候都乐于贡献自己的力量。目前他就职于Red Hat,是Red Hat原生Java微服务框架QuarkusIO的首席软件工程师。

3,280

社区成员

发帖
与我相关
我的任务
社区描述
Kotlin语言的技术分享社区,分享用Kotlin作为主流语言学习安卓过程的点点滴滴,一起学习才有动力
社区管理员
  • wresource
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

大家可以发一些用kotlin开发过程中的问题,多多学习和交流。

试试用AI创作助手写篇文章吧