Scala是一门很自由的程序设计语言,程序员可以根据具体场景,选择最合适的武器来解决所面对的问题。例如,相对于Java的import功能单一,死板,Scala的import机制,更加灵活,自由。
加载所有成员
不仅可以加载某个包下所有的类,也可以加载某个类中所有的成员,或者加载单键对象内所有成员。
import scala.collection.immutable._
import java.lang.Math._
加载多个成员
相对于Java多条语句才能完成的事情,Scala使用一条语句即可,这也体现了Scala彻底贯彻DRY(Don't Repeat Youself)原则的设计哲学。
import java.io.{File, IOException, FileNotFoundException}
作用域内加载
import可局限于某个作用域,例如某个文件,类,单键对象,甚至是函数内。
def random = {
import scala.util.Random
new Random
}
重命名
import java.util.{TreeMap => JTreeMap, HashMap => JHashMap}
import scala.collection.immutable._
此时,TreeMap将无歧义地指向scala.collection.immutable.TreeMap;如果要使用java.util.TreeMap,则使用JTreeMap。
隐藏
import java.util.{HashMap => _, _}
import scala.collection.immutable._
此时,HashMap将无歧义地指向scala.collection.immutable.HashMap;java.util.HashMap将在本作用域内被隐藏。
相对性
因为scala被默认导入,scala.collection.immutable可简写为collection.immutable。
import collection.immutable.HashMap
如果相对导入出现混淆,可以使用绝对导入的方法。
import _root_.scala.collection.immutable.HashMap