前言
Scala默认会为每个.scala
文件导入以下3个包:
java.lang._
scala._
scala.Predef._
(一般很多的隐式转换都在该包下)
包的声明
-
支持和
java
一样的声明方式(基本这种使用)package com.zhengkw.scala.day04.pack
-
支持多个
package
语句(很少碰到)package com.zhengkw.scala.day04.pack package a.b
com.zhengkw.scala.day04.pack.a.b.PackDemo
-
包语句(很少碰到)
package c{ // c其实是子包 class A }
包导入
-
导入和
java
一样, 在文件最顶层导入, 整个文件的任何位置都可以使用(掌握)import java.util.HashMap
-
在
scala
中其实在代码任何位置都可以导入.def main(args: Array[String]): Unit = { import java.io.FileInputStream // 只能在main函数中使用 val is = new FileInputStream("c:/users.json") }
-
导入类的时候, 防止和现有的冲突, 可以给类起别名 (FileInputStream别名为JFI)
import java.io.{FileInputStream => JFI}
-
如何批量导入
import java.io._ // 导入java.io包下所有的类 (java是*)
- 屏蔽某个类
import java.io.{FileInputStream => _, _} //屏蔽 FileInputStream
java
中有静态导入java
只能导入静态成员.
import static java.lang.System.out;
out.println();
scala
scala
中没有静态的概念!
import java.lang.Math._
scala
还支持导入对象的成员
val u = new User
// 把对象u的成员导入
import u._
foo()
eat()
5.3 公共方法的处理
java
中一般搞工具类, 在工具类中写静态方法. 因为java
中所有的方法都需要依附于类或者对象
scala
中为了解决这个问题, 提供了一个包对象的, 将来在这个包内, 使用包对内的方法的时候, 就像使用自己定义的.
package com.zhengkw.scala.day04
//包对象
package object pack {
def foo1() = {
println("foo...")
}
def eat1() = {
println("eat...")
}
}
在com.zhengkw.scala.day04.pack
包下所有的类可以直接使用这些方法.