Kotlin学习系列——目录和包

今天我们学习Kotlin的目录和包。

前面我们了解了Kotlin的类和属性,但是我们都只是写了很少的代码,当代码量增加时,我们就需要一定的方法来组织和分类存放我们的代码,以便于整个项目的维护,如果我们将所有的代码都写在一个kt文件中是不行的。一旦我们开始写出多个kt文件,就涉及到多个文件和类之间的互相调用,这就是我们这一节讨论的Kotlin的目录和包。

Java中的目录和包

我们先说一下Java中的目录和包的规则。

1 . Java中的public类必须和文件名相同

2 . Java中使用package关键字类声明一个包

3 . Java中声明包是目录名之间使用.来分割

4 . Java中声明的包结构必须与目录结构向对应

下面给一个示例

package cn.codekong;

public class Main {
    public static void main(String[] args) {
        System.out.println("我是Java类");
    }
}
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

下面是项目的目录结构
这里写图片描述

Kotlin中的目录和包

可能有人会说上面是Java的基础知识,没必要说,但你有没有发现我们前面学习Kotlin的过程中一直都是和Java对比学习的,这样我们就可以只需要关注两者不一样的东西即可。

下面说说Kotlin中目录和包的规则。

1 . Kotlin中一个kt文件中可以放多个public的类(Kotlin默认的访问权限就是public,所以可以省略)

2 . Kotlin中同样使用package关键字声明一个包

3 . Kotlin中的包声明目录名之间同样使用.来分割

4 . Kotlin中的包声明不需要与目录结构对应

尤其是第四点,目录结构可以不与包结构对应,Kotlin的包声明更像是命名空间,只是让多个类之间不会有冲突,并不关心实际在磁盘上的组织存储方式。

下面同样是一个示例

package cn.codekon.kt

class Main2(val name: String){

}

fun main(args: Array<String>){
    println("我是Kotlin类的")
}
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

下面是项目的目录结构
这里写图片描述
你会发现我包声明和目录结构是不同的,但这仍然是合法的,可以正常编译和使用。

Java与Kotlin的互操作

既然Kotlin和Java都有包的概念,那怎么互相导入类互相操作呢,其实这个和Java中的规则是一样的。

下面只贴一下上面类中Java如何使用Kotlin中的代码

package cn.codekong;

import cn.codekon.kt.Main2;

public class Main {
    public static void main(String[] args) {
        System.out.println("我是Java类");

        Main2 main2 = new Main2("kotlin");

    }
}
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

请注意,因为Kotlin中的包声明没有遵循目录结构,所以当我们使用Kotlin的类时,就按Kotlin中声明的包结构进行import,就可以正常使用了。

写在最后

尽管Kotlin的包声明不遵循目录结构,但我们还是应该要求自己尽量将Kotlin的包声明与文件目录结构相对应,这样可以减少很多莫名的错误,在Kotlin与Java混编的项目中也会少很多麻烦。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值