Kotlin专题「九」:包与导入(Packages and Imports)

前言:一剪薄弱的光,也要骄傲地捧出辉煌。

一、概述

  Kotlin 中的导包也是一门学问,刚从 Java 转 Kotlin 的时候经常导错包或者不知道怎么导适合的包,这里来为大家讲解下 Kotlin 的导包规则。(另外,Kotlin专题的文章会持续更新下去,目前只是更新了一小部分,后面就抓紧时间将剩下的奉上给大家。学习的越深入越会被 Kotlin 简洁的代码以及良好的代码阅读性深深的被折服,当然在学习过程会难免会枯燥乏味,也会遇到困难,这也是提现了每个人的毅力与意志,对知识的渴望,一起共勉!)

二、包与导入

2.1 包(Packages)

Kotlin 源文件第一行代码一般都是包的声明开始:

package com.suming.kotlindemo.blog

fun getListData(){}
class ImportsPackagesActivity : AppCompatActivity() {
	//TODO
}

源文件的所有内容(例如类和函数)都包含在声明的包内。所以,上面的例子中,函数getListData()的全名是com.suming.kotlindemo.blog.getListData();同理,类ImportsPackagesActivity的全称是com.suming.kotlindemo.blog.ImportsPackagesActivity

注意:如果未指定包名,则该文件的内容属于没有名称的默认包。

2.2 默认导入

默认情况下,许多包被导入到每个 Kotlin 文件中:

  • — kotlin.* :            核心函数和类型,在所有支持的平台上都可用;
  • — kotlin.annotation.*:       库对 Kotlin 注解工具的支持;
  • — kotlin.collections.*:       集合类型,如迭代,集合,列表,影射以及相关的顶级和拓展函数;
  • — kotlin.comparisons.* (since 1.1): 用于创建Comparator实例的Helper函数;
  • — kotlin.io.*:            IO API,用于处理文件和流;
  • — kotlin.ranges.*:         范围,进展和相关的顶层和拓展功能;
  • — kotlin.sequences.*:       表示延迟求值集合的序列类型,用于实例化序列的顶级函数和拓展函数;
  • — kotlin.text.*:           用于处理文本和正则表达式的函数。

另外,还会根据不同的平台导入其他包:

  • JVM平台默认导入以下包
    — java.lang.*
    — kotlin.jvm.* (特定于 Java 平台的函数和注释)
  • JS平台默认导入以下包
    — kotlin.js.* (特定于JavaScript平台的函数的其他API)

2.3 导入(Imports)

(1)除了默认导入的包外,每个文件可能需要你使用的某些包:

import android.widget.TextView//导入android.widget包下的TextView类

class ImportsPackagesActivity : AppCompatActivity() {
	var textView = TextView(this) //这里需要用到android.widget包下的TextView类,需要在头部文件导入
}

(2)或者范围内所有可访问的内容(包,类,对象等):

import java.util.* //java.util包下的所有类可用
import kotlin.collections.ArrayList //ArrayList是java.util包下的的子包

class ImportsPackagesActivity : AppCompatActivity() {
	var random = Random() //Random类在java.util包下
    var date = Date(1000) //Date类在java.util包下

	var list = ArrayList<String>() //ArrayList在kotlin.collections包下
}

导入包java.util.*表示包下的所有类都可以使用了,但是如果java.util.*包下还有其他子包,则需要导入具体子包才可使用子包下的类。

(3)如果包名有名称冲突,我们可以使用 as 关键字本地重命名冲突实体类消除歧义。比如新导入的包名与已存在的包名名字冲突了:

import android.widget.TextView 
import com.suming.kotlindemo.blog.TextView as MyView //MyView 表示com.suming.kotlindemo.blog.TextView

class ImportsPackagesActivity : AppCompatActivity() {
 		var View = TextView(this) //android.widget.TextView 
        var myView = MyView()	//使用 as 关键字重新定义了com.suming.kotlindemo.blog.TextView,这里使用 MyView 
    }
}

上面的 android.widget.TextViewcom.suming.kotlindemo.blog.TextView 包名重名了,编译器会报错的,使用 as 关键字类重写命名,使用的时候以新命名的名字为准。

(4)import关键字不限于导入类,也可以用来导入其他声明:

  • 顶级top-level函数和属性;
  • 对象函数声明的函数和属性;
  • 枚举常量。

源码地址:https://github.com/FollowExcellence/KotlinDemo-master

点关注,不迷路


好了各位,以上就是这篇文章的全部内容了,能看到这里的人呀,都是人才

我是suming,感谢各位的支持和认可,您的点赞、评论、收藏【一键三连】就是我创作的最大动力,我们下篇文章见!

如果本篇博客有任何错误,请批评指教,不胜感激 !

要想成为一个优秀的安卓开发者,这里有必须要掌握的知识架构,一步一步朝着自己的梦想前进!Keep Moving!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值