Kotlin 中的 顶层方法 是指 没有定义在任何类中的方法

新建一个 Kotlin 文件,文件类型选择 File ,新建之后,这个文件中的所有方法都是顶层方法。

纳尼?好像不科学。 注意,新建的 Kotlin 文件不是类,所以它里面的方法都是顶层方法。

创建顶层方法

新建了 TopTest.kt ,内容如下

package com.cosmos.helloworld.ktfilefun main() {}fun testTop(){println("testTop")
}

那么,这个文件中的方法都是顶层方法。

在 Kotlin 中调用

在 Kotlin 中可以直接调用顶层方法,
不用包名类名,(你不是 import 了吗?点进去是直达 testTop 方法的,所以是不用包名类名)
也不用创建实例。
如直接在 MainActivity 中调用。

import com.cosmos.helloworld.ktfile.testTopclass MainActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)testTop()}
}

在 Kotlin 文件中调用也一样,

fun main(){testTop()
}

在 Java 中调用

在 Java 中也可以直接调用顶层方法,写法类似调用静态方法的方式,示例,

package com.cosmos.helloworld;
import com.cosmos.helloworld.ktfile.TopTestKt;public class JavaTest {public static void main(String[] args) {JavaTest javaTest = new JavaTest();javaTest.test();}public void test(){TopTestKt.testTop(); //这里}
}

Java 中没有顶层方法的概念,方法必须定义在类中。所以不能是 Kotlin 的写法。

刚才创建了 TopTest.kt 文件,编译器会自动创建一个 TopTestKt 的 Java 类,testTop 方法就定义在 TopTestKt 的 Java 类中。

所以,Java 中就这样写了,

TopTestKt.testTop();

测试时还碰到个问题,运行提示 SourceSet with name ‘main‘ not found

* What went wrong:
A problem occurred configuring project ':app'.
> Could not create task ':app:JavaTest.main()'.> SourceSet with name 'main' not found.

修改 .idea/gradle.xml ,添加 <option name="delegatedBuild" value="false" />

同步一下,运行OK。

Kotlin笔记30--顶层方法相关推荐

  1. kotlin笔记第一阶段(变量语句函数)

    kotlin笔记第一阶段(变量&语句&函数) 笔记所在视频地址 02.Kotlin语言成为Android第一语言 03.Kotlin语言和JVM虚拟机 04.学Kotlin语言的重要性 ...

  2. 学习kotlin笔记之一

    各个语言的精华集聚一身的新时代语言Kotlin,Google下定决心,将kotlin作为Android原生语言. 1.变量空指针检查: (1)变量直接赋值为null,不允许,会检查报错.所以想要赋值为 ...

  3. Laravel学习笔记汇总——Collection方法详解

    ## Laravel学习笔记汇总--Collection方法详解 本文参考:https:// laravel.com/docs/8.x/collections // 返回整个底层的数组 collect ...

  4. 深度学习笔记:优化方法总结(BGD,SGD,Momentum,AdaGrad,RMSProp,Adam)

    深度学习笔记(一):logistic分类  深度学习笔记(二):简单神经网络,后向传播算法及实现  深度学习笔记(三):激活函数和损失函数  深度学习笔记:优化方法总结  深度学习笔记(四):循环神经 ...

  5. 小红书笔记下沉的方法和技巧

    小红书目前用户越来越多,随之而来发布的笔记数量也大了起来,不可避免得出现很多恶意的负面笔记,让大家很头疼. 下面推神网(daizuobaike)就给大家详细介绍下几种小红书负面笔记处理的方式: 1.官 ...

  6. 2020-4-5 深度学习笔记17 - 蒙特卡罗方法 3 ( 马尔可夫链蒙特卡罗方法MCMC-先验分布/后验分布/似然估计,马尔可夫性质)

    第十七章 蒙特卡罗方法 中文 英文 2020-4-4 深度学习笔记17 - 蒙特卡罗方法 1 (采样和蒙特卡罗方法-必要性和合理性) 2020-4-4 深度学习笔记17 - 蒙特卡罗方法 2 ( 重要 ...

  7. win 10 slmgr.vbs -xpr 无法运行,被豆麦笔记打开解决方法

    win 10 slmgr.vbs -xpr 无法运行,被豆麦笔记打开解决方法 参考文章: (1)win 10 slmgr.vbs -xpr 无法运行,被豆麦笔记打开解决方法 (2)https://ww ...

  8. 初学kotlin笔记

    面对安卓开发大趋势,不得不放下java,学习kotlin 忽略语法,在第一行代码中最开始了解的就是控件的使用,有过java的学习基础,相信大家使用控件都会易如反掌.以下就是对kotlin的一些见解 1 ...

  9. 软件开发相关的读书笔记 问题与方法

    软件开发相关的读书笔记 问题与方法 https://www.zybuluo.com/UDvoid/note/45720 标签: 读书笔记 软件开发 关于银弹的讨论 [No Silver Bullet: ...

最新文章

  1. AStyle - SourceInsight
  2. 面试官问我,Redis分布式锁如何续期?懵了。
  3. java截取图片-设置方位+设置大小
  4. C++两个整数的总和是否为整数溢出的算法实现(附完整源码)
  5. servlce与filter的url-pattern介绍
  6. MySQL亿级数据量实时同步,小米如何完美hold住
  7. Generator简单了解
  8. 架构杂谈《八》Docker 架构
  9. 算法有偏见?总比人类识别强吧!
  10. 寻宝机器人电路板焊接_专业维修淮安市KUKA库卡KRC2机器人回收{机器人调试}
  11. day09 CDN绕过漏洞回链接口探针全网扫描反向邮件
  12. r语言转python,R语言与python语言读写loom文件
  13. 读万卷书,行万里路,写万行Code
  14. 网站备案 服务器变更,网站变更服务器备案
  15. C语言编程>第十七周 ⑤ 请补充fun函数,该函数的功能是:用来求出数组的最小元素在数组中的下标并存放在k所指的存储单元。
  16. Docker基于现有镜像构建新镜像
  17. PAMI19 - 强大的级联RCNN架构《Cascade R-CNN: High Quality Object Detection and Instance Segmentation》
  18. 目标检测—安全帽检测实践
  19. 17、简单的企业人事管理系统(ssh)
  20. debian、ubuntu:使用apt包管理器可能存在的问题! 让新手望而却步!

热门文章

  1. 如何锻炼孩子的逻辑思维?编程教育是绝佳媒介
  2. 机械自动化原理动图,你都见过吗?
  3. java rhino 下载_8.4(Java学习笔记)java脚本引擎(Rhino)
  4. BOI 2005 Maze SPFA
  5. Android 解决小米手机添加图片水印后显示黑边的问题
  6. 知识图谱关键技术与应用案例
  7. A Lightweight and Accurate Recognition Framework for Signs of X-ray Weld Images
  8. cd机怎么接dsp_入门级汽车DSP功放如何玩转主动分频系统
  9. 长沙电销机器人排名_长沙电销机器人公司招聘
  10. 【录屏】OBS如何区域录制