当前位置:   article > 正文

Kotlin - package、import及as等关键字_kotlin import as

kotlin import as

package

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

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

package foo.bar
fun bza() {}
class Goo {}
//...
  • 1
  • 2
  • 3
  • 4

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

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

import

导入一个单独的名字

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

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

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

冲突

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

import net.mindview.simple.*
import java.until.*
  • 1
  • 2

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

Vecotr v = Vector()
  • 1

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

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

这样完全指明了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()
  • 1
  • 2
  • 3
  • 4
  • 5

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

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号