scala不使用new关键字创建对象实例
2017-07-17 22:23
483 查看
在scala中,scala不使用new关键字创建对象实例,一般有2中方法:
1. 为类创建伴生对象,并在伴生对象内按照所需的构造函数签名定义一个apply方法;
2.将类定义为case类。
1)用apply方法创建一个伴生对象:
运行结果
I am into Scala so much
have a try on apply
I am into spark so much!!!
object apply 是一种比较普遍用法。 主要用来解决复杂对象的初始化问题。同时也是单例
2)将类声明为case类
case class Person(var :String)
case的作用在于它在伴生对象生成了一个apply对象,更重要的是,case类生成的代码远不止apply方法。apply实际上是一个工厂方法。
1. 为类创建伴生对象,并在伴生对象内按照所需的构造函数签名定义一个apply方法;
2.将类定义为case类。
1)用apply方法创建一个伴生对象:
class ApplyOperation { } class ApplyTest{ def apply() = println("I am into spark so much!!!") def haveATry: Unit ={ println("have a try on apply") } } object ApplyTest{ def apply() = { println("I am into Scala so much") new ApplyTest } } object ApplyOperation{ def main (args: Array[String]) { val array= Array(1,2,3,4) val a = ApplyTest() //这里就是使用object 的使用 a.haveATry a() // 这里就是 class 中 apply使用 } }
运行结果
I am into Scala so much
have a try on apply
I am into spark so much!!!
object apply 是一种比较普遍用法。 主要用来解决复杂对象的初始化问题。同时也是单例
2)将类声明为case类
case class Person(var :String)
case的作用在于它在伴生对象生成了一个apply对象,更重要的是,case类生成的代码远不止apply方法。apply实际上是一个工厂方法。
相关文章推荐
- scala不使用new关键字创建对象实例
- 《JavaScript设计模式与开发实践》——JavaScript中使用new关键字创建对象实例
- 使用new关键字创建对象的三个作用
- Effective C++第17条:要在单独的语句中使用智能指针来存储由new创建的对象
- JS中用new 创建对象及在构造函数中return的使用
- Ruby on Rails,使用new和create创建ActiveRecord对象及他们之间的区别
- 使用new和反射实例化内部类对象
- 抽象工厂模式:简单工厂模式、工厂方法模式对比;在工厂方法模式中使用反射创建对象实例
- 使用隐藏的new来创建对象
- 对于String对象,可以使用"="赋值,也可以使用"new"关键字赋值,两种方式有什么区别?
- C#多态;父类引用指向子类对象;new和override的区别;new、abstract、virtual、override,sealed关键字区别和使用代码示例;c#类的初始化顺序
- JS中用new 创建对象及在构造函数中return的使用
- asp.net 使用radiobuttonlist的困惑 - 使用关键词New创建实例
- java 程序加载过程---3--类中申明同时申明类的静态对象 创建类的实例 访问类的静态变量 调用类的静态方法 使用反射方法 初始化类的子类对象 直接使用java.exe 调用某个类
- 实例变量的初始化,构造器在new - 创建实例对象的时候,才会调用执行
- 第2章 Java编程基础——FAQ2.22 创建String对象时, 使用String s=new String (“abc”)和String s=“abc”语句有什么区别?
- Class.forName与new创建对象实例的区别
- new一个类对象和使用类名创建一个对象有什么区别?
- Effective C++第17条:要在单独的语句中使用智能指针来存储由new创建的对象
- C++中,使用new与不使用new创建对象的区别