zoukankan      html  css  js  c++  java
  • 6.scala中的包

    版权申明:转载请注明出处。

    文章来源:http://bigdataer.net/?p=287

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

    1.基础特性

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

    2.包对象

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

    scala    10行

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

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

    3.重命名和隐藏方法

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

    scala    3行

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

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

    scala    3行

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

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

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

  • 相关阅读:
    leetcode 29-> Divide Two Integers without using multiplication, division and mod operator
    ros topic 发布一次可能会接收不到数据
    python中的print()、str()和repr()的区别
    python 部分函数
    uiautomatorviewer错误 unable toconnect to adb
    pyqt 不规则形状窗口显示
    appium 计算器demo
    Spring 3.0 注解注入详解
    Spring Autowire自动装配
    restful 学习地址
  • 原文地址:https://www.cnblogs.com/bigdataer/p/6596329.html
Copyright © 2011-2022 走看看