标签:
Scala中的包跟Java中有很大区别.包的最主要的作用是为了隔离命名空间.在Java中类的第一行声明类所在的包,
而且该类必须位于包所声明的路径下.但是在scala中并不需要类位于相应的包路径下.看个例子:
我们在包chapter07下新建Team.scala类:
我们看下Team.scala的内容
package com.sina.nba object Team extends App{ println("Hello") }
Team.scala类位于chapter07包下.但是Team.scala中第一行却声明其位于com.sina.nba包下.这在scala中是
可行的.
Scala中的包除了可以使用传统Java包的方式进行声明外,还可以使用嵌套语法进行声明,如下:
package chapter07.sec1 //在scala中包可以嵌套 package com{ class ComCommon{ println(this.getClass.getSimpleName) } package sina{ class SinaCommon{ println(this.getClass.getSimpleName) } package nba{ object Team extends App{ val comCommon = new ComCommon val sinaCommon = new SinaCommon } } } }
在上面的例子中我们看到scala中的包还可以使用嵌套语法.我们在Team中可以访问ComCommon和SinaCommon
,这是因为包的嵌套语法遵循"大括号访问规则".
在scala中还有包对象这种结构.包对象可以用来包容一些公共代码(这在Java中往往通过工具类来实现),如下:
package chapter07 package object sec2{ val defaultName = "nba" } package sec2{ object Team extends App{ println(defaultName) } }
scala中的包可以在任何地方引入,引入的有效范围是当前所在大括号内,如下:
上述代码中我们在method1中引入了chapter07.sec1.com.ComCommon类,但是我们不能在method2中使用.
scala中包的引入主要有如下几种用法:
package chapter07.sec4 object Team extends App { //引入某个包下的全部类 import java.util._ //引入某几个类 import java.util.{Date,Calendar} //引入某个类并重命名 import java.util.{Date => UDate} import java.sql.{Date => SDate} //隐藏某个类 import java.util.{HashMap => _,_} }
标签:
原文地址:http://www.cnblogs.com/sysman/p/4530667.html