Kotlin基础认知 - 为何Kotlin文件有的带.kt后缀,有的不带?

news2025/8/1 22:05:27

有一天看到项目中的Kotlin类,有的有.kt后缀,有的没有,针对这个情况我就简单看了下,然后记录一波

      • 创建 Kotlin Class 或 Kotlin File
        • 创建Kotlin class
        • 创建Kotlin File
      • 俩者区别
        • 展现形式
          • 外部展现
          • 内部展现
        • 延伸扩展、对向转换
          • Class无后缀 → File有后缀
          • File有后缀 → Class无后缀
      • 结论: 来这里看看 .kt后缀 的出现场景、区别

创建 Kotlin Class 或 Kotlin File

新建操作:包名 - 右键 - New - Kotlin Class/File

在这里插入图片描述

可根据需求自行选取Class/File

在这里插入图片描述

创建Kotlin class

在这里插入图片描述

KtClass

package com.example.kotlindemo

class KtClass {
}

创建Kotlin File

在这里插入图片描述

KtFile你并没有看错,新建Kotlin File后,内部仅有一行包申明,除此之外无任何类、函数

package com.example.kotlindemo

俩者区别

区别ClassFile
是否有.kt后缀
内部是否有声明类、方法
对向转换(class 转 File,或File 转 cLASS)可以可以

展现形式

Hint:这里我将其分为内部展现、外部展现,从俩个维度说明一下

外部展现
  1. 通过class创建的KotlinClass无需声明.kt后缀(个人感觉是默认kt文件了)
  2. 通过file创建的KotlinClass自带.kt后缀

在这里插入图片描述

内部展现

KtClass - 生成后默认声明创建类

package com.example.kotlindemo

class KtClass {
}

KtFile- 生成后内部无任何类、函数

package com.example.kotlindemo

延伸扩展、对向转换

通过 Class和File的双向转换,验证 .kt 后缀的出现场景

Class无后缀 → File有后缀

这是我创建的一个 KtClass ,初始创建时直接声明了是单个Kotlin class

在这里插入图片描述

接下来我在这个 KtClass 中又声明了多个 class ,这个场景是Kotlin所支持的~ 嗯,然后之前的 KtClass 类直接自行加了.kt后缀,转为了File的形式!!!

在这里插入图片描述

File有后缀 → Class无后缀

这是我们初始创建的一个 Kotlin File 文件

在这里插入图片描述

我们在该KtFile 内声明对应File文件的 KtFile 类,你就会发现该类自动从File换为了kt class

在这里插入图片描述

兴趣:如果在单KtClass中,再声明一个函数或者类,又会自动转为File的文件类型了,.kt后缀也会自动出现咯 ~

在这里插入图片描述


结论: 来这里看看 .kt后缀 的出现场景、区别

根据我们上方的一堆测试、认证,总结出了以下几点结论

  1. 新建Kotlin类时,选择Class则创建单个ktClass类,这时候是无.kt后缀的;选择File则直接自带.kt后缀
  2. 不论是单Class,还是File 都是可以相互转换的,主要看具体的使用场景
  3. 单个Kotlin Class文件是不带 .kt 后缀的, 但是内部如果有多个类、函数,那么会自动转换为File类型,随之就会带 .kt后缀

结果: .kt 后缀的有无,取决于俩个场景,其一 创建的是File文件,其二 内部类、独立函数的个数 >=2 ,这俩场景都会则显示 .kt 后缀

个人想法:这种根据 File 内部类、函数 相互转换文件类型的操作,应该是内部的一种策略,从而实现的自动转换~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/35078.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Silvaco example】Temperature Ramping - Effect on Leakage

1、例子讲解 本示例演示了Atlas中任何device的全局温度梯度(global temperature ramping)的正确方法。 (1)结构定义 为了简单起见,这里选择了二极管结构。 go atlasmeshx.mesh loc0.00 spac0.05 x.mesh loc0.10 sp…

简单手段发IF=7+文章:磷酸三苯酯对鲤鱼的毒性作用及肠道微生物群落影响

研究背景 磷酸三苯基酯(TPHP)是一种有机磷阻燃剂,它通过挥发以及溶解分散到环境中,并通过食物链富集生物体,对生态系统产生不可避免的负面影响。已发现TPHP可以引起组织病变,干扰脂质代谢,并降…

全新营销时代,金融企业如何有“种”有“收”?

贯穿2022年的主题,就是“不确定性”。 复杂的大环境下,金融行业的发展饱受“震荡”。疫情、通胀,乃至二级市场的风云变幻,都在考验金融企业经营的确定性。那么,金融企业踏平波动、坚定前行的力量从何而来?…

Spring Boot 简介及快速搭建

Spring Boot 简介及快速搭建 springboot的优点: –快速构建一个独立的 Spring 应用程序 ; –嵌入的 Tomcat 、 Jetty 或者 Undertow,无须部署 WAR 文件; –提供starter POMs来简化Maven配置和减少版本冲突所带来的问题&#xff1…

Vue3 setup函数的使用

全新的 setup 函数 在开始编写 Vue 组件之前,需要了解两个全新的前置知识点: 全新的 setup 函数,关系到组件的生命周期和渲染等问题 写 TypeScript 组件离不开的 defineComponent API setup 的含义 Vue 3 的 Composition API 系列里&#x…

计算机网络---应用层概述

(一)应用层概述 基本定义: 应用层(Application layer)是OSI模型的第七层。应用层直接和应用程序接口并提供常见的网络应用服务。应用层也向表示层发出请求。应用层是开放系统的最高层,是直接为应用进程提供服务的。其…

数据可视化设计经验分享:10分钟做出炫酷数据大屏

又快到年终了,数据大屏作为一个数据管理的分析工具,在年底数据大屏的制作需求日益增加。在一些公司比如银行、证券、医院、外贸等“数据大户”,在数据大屏的应用上更是有大量需求。 在接下来的两个月,许多人会感到痛苦吧&#xf…

.net---继承和多态

继承和多态继承和多态的基本概念继承继承的类型实现继承接口继承继承派生类base关键字构造函数的调用类成员的继承类成员的隐藏继承:虚方法和隐藏方法抽象类和抽象方法抽象类抽象方法密封类和密封方法密封类接口接口成员接口实现多态重载重写继承和多态的基本概念 …

NIO中ByteBuffer

// Invariants: mark < position < limit < capacityprivate int mark -1;private int position 0;private int limit;private int capacity; 从源码中可以看出&#xff0c;ByteBuffer的几个实例变量。我们稍后会详细解析这几个变量的意义。 在我们刚创建ByteBuff…

绿色积分消费时代来临,共享购跟随国家的号召

近年来&#xff0c;中国共享经济商业模式不断发展成熟。自2016年国家“十三五”规划纲要首次提出“共享经济”概念以来&#xff0c;中国政府不断助推共享经济发展。最新发布的《共享经济指导原则与基本框架》为共享经济作出定义&#xff1a;共享经济即“资源供给者通过平台与资…

IDEA配置Maven

1. IDEA配置Maven环境 先在IDEA中配置Maven环境&#xff1a; 选择 IDEA中 File --> Settings 搜索 maven 设置 IDEA 使用本地安装的 Maven&#xff0c;并修改配置文件路径 2. IDEA 创建 Maven项目 创建模块 创建模块&#xff0c;选择Maven&#xff0c;点击Next 填写模块名称…

你不知道的Spring的依赖的查找和注入的来源

1.写在前面 前面的博客我们已经介绍完了spring的依赖的查找和注入的方式&#xff0c;这篇博客我们主要介绍下spring的依赖的查找和注入的来源。 2.依赖查找的来源 查找来源 Spring 內建 BeanDefintion Spring 內建单例对象 上面的各种依赖都是在spring的生命周期的过程中&am…

干掉可恶的弹窗广告——windows系统

一、背景 许多国产软件为了生计&#xff0c;内嵌了无数广告。有些弹窗广告是可以在软件的设置里关闭的&#xff0c;但有些是流氓类型&#xff0c;无法设置。 1、有些是右下角弹窗&#xff0c;不提供关闭的设置&#xff08;能在图片上显示广告来源已经是比较良心了&#xff09…

金融机器学习:数据集划分与baseline模型

原创文章第115篇&#xff0c;专注“个人成长与财富自由、世界运作的逻辑&#xff0c; AI量化投资”。 在模型训练过程中&#xff0c;过拟合&#xff08;overfitting&#xff09;是非常常见的现象。所谓的overfitting&#xff0c;就是在训练集上表现很好&#xff0c;但是测试集…

学弟:功能测试转测试开发容易吗?

最近看到后台留言问&#xff1a;功能测试转测试开发容易吗&#xff1f; 从这个问题&#xff0c;我能读出一些信息如下&#xff1a; 不知道你从事测试工作多久了&#xff0c;可以看出您特别羡慕测试开发工程师&#xff1b;你可能一直从事功能测试工作&#xff0c;工作模式或大…

关于对 DeferWindowPos 的理解

DeferWindowPos 这个 API 的目标是&#xff1a;同一时间&#xff0c;移动多个子窗口。这在一定程度上减少了窗户移动时进行的重绘工作量。 修改我们之前的例子代码&#xff0c;如下图所示&#xff1a; >> 请移步至 topomel.com 查看图片 << 请注意&#xff0c;我…

基于蚁群算法的时延Petri网(ACOTPN)路径规划算法(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

ImmunoChemistry艾美捷抗体涂层缓冲液解决方案

使用ImmunoChemistry艾美捷ICT的抗体涂层缓冲液来节省试剂&#xff0c;增强特定信号&#xff0c;并延长涂层板的保质期。抗体涂层缓冲液最大限度地将抗体吸附到聚苯乙烯板上&#xff0c;并稳定抗体的三维结构以获得最佳性能。 ImmunoChemistry抗体涂层缓冲液&#xff0c;5X通过…

Debian11.5安装Podman并以多容器方式搭建LEMP环境

起因&#xff1a;之前在CentOS系统时代&#xff0c;写过一篇采用docker搭建LEMP环境的博客。现在时过境迁&#xff0c;CentOS系统&#xff0c;CoreOS系统&#xff0c;Docker&#xff0c;Podman管理工具的地位和应用&#xff0c;都有了极大变化&#xff0c;而我也转到了更为自由…

3d-face-reconstruction比较

摘要&#xff1a;比较近3年&#xff0c;6篇顶会3d-face-reconstruction重建效果。 1:Deep3D **发表时间:**2020 成就&#xff1a; 1&#xff09;在REALY和REALY (side-view)两个Benchmark上取得 State-of-the-art。 2&#xff09;官方github上成绩&#xff1a; 3DMM&#xf…