6.scala中的包

作者: bigdataer | 来源:发表于2017-03-21 19:45 被阅读54次

    版权申明:转载请注明出处。
    文章来源:http://bigdataer.net/?p=287

    排版乱?请移步原文获得更好的阅读体验

    1.基础特性

    scala中的包和java中的包类似,都是用来在大型工程中给类限定一个命名空间。有如下特性:
    (1)包可以像内部类那样嵌套
    (2)包路径不是绝对路径。
    (3)包声明链net.bigdataer.blog并不会自动将中间包net和bigdataer变为可见。
    (4)位于文件顶部不带花括号的包声明在整个文件范围内都有效。

    2.包对象

    包对象是scala为了突破jvm的限制,将工具函数或者常量类添加到包下面而设计的。这样,一个包既可以包含类、对象、特质也能包含函数或者变量。每个包都有一个包对象,需要在父包中定义,且名字和当前包名一样。举例:

    package net.bigdataer
    package object blog{
     val theme:String = "大数据"
    }
    package blog{
     class Post{
     val title = theme //从包中获取常量,这里也可以调用包提供的函数
     }
    }
    

    包对象被编译后会生成一个.class文件,位于相应的包下面。比如上面的包对象会被编译为blog.class并且位于net.bigdataer包下面。

    3.重命名和隐藏方法

    由于在scala中可以直接使用java中的类,这样会造成类重名,防止在使用中出现错误,可以在包引入语句中对要引入的类做重命名操作,如:

    import java.util.{HashMap => JavaHashMap}
    import scala.collection.mutable._
    

    这样,java中的HashMap在使用中就为JavaHashMap而避免了与scala中的HashMap冲突。
    使用类似HashMap => _并不是表示重命名,而是将HashMap隐藏。如:

    import java.util.{HashMap => _,_}
    import scala.collection.mutable._
    

    这样隐藏了对java中HashMap的引入,只剩下scala中的HashMap.

    更多文章请关注微信公众号:bigdataer

    相关文章

      网友评论

        本文标题:6.scala中的包

        本文链接:https://www.haomeiwen.com/subject/bwngnttx.html