💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
因为Scala取消了Java中的`static`关键字,所以我们可以使用单例对象来代替。 <br/> **1. 定义单例对象的基础语法** ```scala object ObjectName { main方法 其它成员方法 字段 } ``` * Scala中的单例对象同Java中的`static`的功能一样,在首次调用时被创建并且也只能被创建一次,后面无论调用多少次都是调用同一个对象。 * 应该注意到,`main`方法只在单例对象中起作用。 * 访问单例对象的成员,可以直接`ObjectName.成员`来调用,也只能这样调用。 * 单例对象不能被`new`。 * 单例对象只有一个无参的主构造器,没有其它的有参构造器。 * 在 Scala 中,类和单例对象的差别在于,单例对象不能带参数,而类可以。因为单例对象无法使用 new 关键字实例化,也就没有办法为它传递实例化参数。 * 单例对象不能被继承。 **2. 定义单例对象** ```scala object Point1 { // main方法 def main(args: Array[String]): Unit = { // 直接 ObjectName.成员 调用object的相关成员 Point1.fun(10, 20) Point1.z } // 其它成员方法 def fun(x:Int, y:Int):Int = x + y // 字段 val z:Int = 9999 } ``` 编译的Java代码如下: ```java import scala.reflect.ScalaSignature; @ScalaSignature(bytes="\006\0") // 被final修饰说明单例对象不能被继承 public final class Point1 { public static int z() { return Point1..MODULE$.z(); } public static int fun(int paramInt1, int paramInt2) { return Point1..MODULE$.fun(paramInt1, paramInt2); } public static void main(String[] paramArrayOfString) { Point1..MODULE$.main(paramArrayOfString); } } ```