Kotlin - package、import及as等关键字

package

为了方便管理大型软件系统中数目众多的类,解决类的命名冲突问题,类似于Java,Kotlin同样引入包(package)机制,提供类的多重类名空间。

package语句必须是文件中的第一行非注释的程序代码。

package foo.bar
fun bza() {}
class Goo {}
//...

源文件的所有内容(比如类和函数)都被包声明包括。 因此在上面的例子中,bza() 的全名应该是 foo.bar.baz , Goo 的全名是 foo.bar.Goo 。

如果没有指定包名, 那这个文件的内容就从属于没有名字的 “default” 包。

import

导入一个单独的名字

import foo.Bar //Bar 现在可以不用条件就可以使用

范围内的所有可用的内容 (包, 类, 对象, 等等):

import foo.*/ /foo 中的所有都可以使用

冲突

如果将两个含有相同名称的的类库以“*”同时导入,将会存在潜在的冲突。例如

import net.mindview.simple.*
import java.until.*

由于java.util.和net.mindview.simple.都包含Vector类。如果在创建一个Vector类时:

Vecotr v = Vector()

此时,编译器并不知道调用哪个类库的类,从而会报错误信息。假如需要一个java.until.Vector对象,只能这么创建

java.until.Vecotr v = java.until.Vector();

这样完全指明了Vector类的位置,除非还需要java.until.中其他的类,否则没有必要使用java.until.导入库。

当然可以使用入一个单独的名字,即java.until.Vecotr,这样可以解决。

如果在一个类中,需要同时调用java.until.Vecotr 和 net.mindview.simple.Simple对象,该如何解决呢?
此时不得不提,Kotlin中强大的 as关键字,此关键字用于局部重命名,以解决冲突。上面的问题,我们可以这样解决:

import net.mindview.simple.Vecotr
import java.until.Vecotr as aVector

val v : Vecotr = Vector()
val vA : aVector = aVector()

上述代码中的,v是net.mindview.simple.Vecotr对象,而 vA是java.until.Vecotr as aVector对象,as 完美的解决了导包冲突的问题

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值