码迷,mamicode.com
首页 > 其他好文 > 详细

9-包

时间:2015-05-26 15:57:22      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:

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 => _,_}
  
}

 

9-包

标签:

原文地址:http://www.cnblogs.com/sysman/p/4530667.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!