- 浏览: 599528 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (669)
- oracle (36)
- java (98)
- spring (48)
- UML (2)
- hibernate (10)
- tomcat (7)
- 高性能 (11)
- mysql (25)
- sql (19)
- web (42)
- 数据库设计 (4)
- Nio (6)
- Netty (8)
- Excel (3)
- File (4)
- AOP (1)
- Jetty (1)
- Log4J (4)
- 链表 (1)
- Spring Junit4 (3)
- Autowired Resource (0)
- Jackson (1)
- Javascript (58)
- Spring Cache (2)
- Spring - CXF (2)
- Spring Inject (2)
- 汉字拼音 (3)
- 代理模式 (3)
- Spring事务 (4)
- ActiveMQ (6)
- XML (3)
- Cglib (2)
- Activiti (15)
- 附件问题 (1)
- javaMail (1)
- Thread (19)
- 算法 (6)
- 正则表达式 (3)
- 国际化 (2)
- Json (3)
- EJB (3)
- Struts2 (1)
- Maven (7)
- Mybatis (7)
- Redis (8)
- DWR (1)
- Lucene (2)
- Linux (73)
- 杂谈 (2)
- CSS (13)
- Linux服务篇 (3)
- Kettle (9)
- android (81)
- protocol (2)
- EasyUI (6)
- nginx (2)
- zookeeper (6)
- Hadoop (41)
- cache (7)
- shiro (3)
- HBase (12)
- Hive (8)
- Spark (15)
- Scala (16)
- YARN (3)
- Kafka (5)
- Sqoop (2)
- Pig (3)
- Vue (6)
- sprint boot (19)
- dubbo (2)
- mongodb (2)
最新评论
Scala比Java更面向对象的一个方面是Scala没有静态成员。替代品是,Scala有单例对象:singleton object。
当单例对象与某个类共享同一个名称时,他被称作是这个类的伴生对象:companion object。你必须在同一个源文件里定义类和它的伴生对象。类被称为是这个单例对象的伴生类:companion class。
类和它的伴生对象可以互相访问其私有成员。
定义单例对象不是定义类型(在Scala的抽象层次上说)
类和单例对象间的一个差别是,单例对象不带参数,而类可以。因为你不能用new关键字实例化一个单例对象,你没机会传递给它参数。每个单例对象都被作为由一个静态变量指向的虚构类:synthetic class的一个实例来实现,因此它们与Java静态类有着相同的初始化语法。Scala程序特别要指出的是,单例对象会在第一次被访问的时候初始化。
Scala 的apply 有2 张形式,一种是 伴生对象的apply ,一种是 伴生类中的apply,下面展示这2中的apply的使用。
示例代码:
运行结果
object apply 是一种比较普遍用法。 主要用来解决复杂对象的初始化问题。同时也是单例。
当单例对象与某个类共享同一个名称时,他被称作是这个类的伴生对象:companion object。你必须在同一个源文件里定义类和它的伴生对象。类被称为是这个单例对象的伴生类:companion class。
类和它的伴生对象可以互相访问其私有成员。
定义单例对象不是定义类型(在Scala的抽象层次上说)
类和单例对象间的一个差别是,单例对象不带参数,而类可以。因为你不能用new关键字实例化一个单例对象,你没机会传递给它参数。每个单例对象都被作为由一个静态变量指向的虚构类:synthetic class的一个实例来实现,因此它们与Java静态类有着相同的初始化语法。Scala程序特别要指出的是,单例对象会在第一次被访问的时候初始化。
Scala 的apply 有2 张形式,一种是 伴生对象的apply ,一种是 伴生类中的apply,下面展示这2中的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 是一种比较普遍用法。 主要用来解决复杂对象的初始化问题。同时也是单例。
发表评论
文章已被作者锁定,不允许评论。
-
Scala 在Intellij中搭建Scala环境(jdk8,scala2.11.4)
2017-06-02 16:33 14441.打开Intellij然后点击File->Plugin ... -
Scala Partial Functions(偏函数)学习
2017-04-24 10:54 346如果你想定义一个函数,而让它只接受和处理其参数定义域范围内的子 ... -
Scala 样本类(case class)和模式匹配(match)学习
2017-04-20 18:20 833样本类(case clas)和模式 ... -
Scala 作业题练习纪录
2017-04-20 14:39 10041.用reduceLeft获取集合中最大元素 println ... -
Scala 闭包理解
2017-04-20 13:57 663闭包是一个函数,返回值依赖于声明在函数外部的一个或多个变量。 ... -
Scala 各种符号的含义(->,:::,::,<-,=>)
2017-04-20 09:50 652:::运算符 :::(三个冒号)表示List的连接操作,比如: ... -
Scala filter方法过滤集合元素(获取集合中的元素)
2017-04-19 14:44 2079Problem 你想要筛选出集合中的一些元素形成一个新的集合 ... -
Scala Map(映射)学习
2017-04-18 09:20 431Map(映射)是一种可迭代的键值对(key/value)结构。 ... -
Scala 元组Tuple学习
2017-04-17 16:12 641元组是Scala提供的一种 ... -
Scala 函数之map(返回集合)、reduce、flatMap、zip和foreach(无返回值)学习
2017-04-17 15:04 2231map和flatMap的区别 object collect ... -
Scala 符号 => 的用法(匿名函数(x:Int)=>x+1)
2017-04-17 10:58 7001. 表示函数的类型(Function Type) de ... -
Scala 下划线(_)的多种应用场景学习
2017-04-13 20:00 5881、作为“通配符”,类似Java中的*。如import sca ... -
Scala mkString方法(把一个集合转化为一个字符串)
2017-04-13 19:34 1208Problem 如果你想要把集合元素转化为字符串,可能还会添加 ... -
Scala yield案例 (for 循环和 yield 的例子)
2017-04-13 18:42 630下面是摘自 《Programming in Scala》关于 ... -
Scala 基本概念学习
2017-04-13 14:40 537Type Inference类型推断 当你声明的任何变量时,你 ...
相关推荐
总结来说,Scala中的伴生对象和`apply`方法结合,提供了一种方便的、函数式的创建对象的方式。通过在伴生对象中定义`apply`方法,我们可以使类的实例化更加灵活,同时保持代码的简洁性。这对于构建模块化的、可扩展...
首先,`Class`在Scala中用于定义类,它允许我们创建具有特定属性和行为的对象。类是抽象的,它们描述了实例化后的对象的结构和功能。例如,在给定的示例中,我们有一个名为`ApplyTest`的类,它包含一个`apply()`方法...
### Scala的List类方法整合 在Scala编程语言中,`List` 类是处理有序集合的一种常见方式。本文将详细介绍 `List` 类中的多种方法及其用途,帮助开发者更好地理解和使用这些功能。 #### 1. `def + (elem: A): List...
对象和类共享同名的属性和方法,形成紧密关联。 7. **Nil, Null, None, Nothing 的区别**: - `Nil` 是 List 的头对象,表示空列表。 - `Null` 是所有引用类型的子类型,表示空引用。 - `None` 是 Option 类型的...
4. 类和对象:Scala中类的定义很灵活,一个源文件中可以包含多个类,而且这些类都是public级别的。类可以拥有构造函数,分为主构造函数和辅助构造函数。类支持继承和方法重写,同时提供了getter和setter方法。抽象类...
在 Scala 教程中,我们首先会接触到基础概念,包括表达式、值、函数、类、继承、特质、类型、apply 方法、单例对象、函数即对象、包、模式匹配、样本类以及异常处理机制 try-catch-finally。 1. **表达式**:Scala ...
Scala是一种强大的多范式编程语言,它...以上就是Scala面向对象编程中的`object`、伴生对、`apply`方法以及`main`方法的基本概念和用法。这些是Scala编程中的核心组成部分,对于理解和使用Scala进行实际开发至关重要。
### Scala学习笔记关键知识点 ...以上内容涵盖了Scala学习笔记中的关键知识点,从并发编程到函数式编程的核心概念,再到Scala语言本身的一些特殊规则和特点,这些都是学习Scala时需要掌握的基础知识。
通过`apply`方法来实例化样例类,这种方式更加简洁,但需要注意的是`apply`方法必须在样例类定义时手动添加。 #### 四、样例类实例的比较 ```scala case class Student4(name: String, age: Int) object Demo4 { ...
伴生对象中包含了apply和unapply两个重要方法。apply方法允许开发者直接通过类名来创建样例类的实例,而unapply方法则用于提取器操作,即从对象中提取构造它的参数。当实现了unapply方法后,伴生对象就成为了提取器...
在Scala中,工厂模式可以通过伴生对象(companion object)和应用方法(apply method)来实现: ```scala object Car { def apply(carType: String): Car = carType match { case "Race" => RaceCar() case ...
Scala提供了丰富的数组操作方法,这些方法可以帮助开发者更高效、更简洁地进行数组的管理和操作。下面将详细介绍Scala中的一些关键数组方法及其用法。 #### 1. `def apply(x:T, xs:T*):Array[T]` 此方法用于创建一...
在Scala这样的语言中,`apply`方法是定义在`case class`和`object`上的特殊方法,使得你可以像调用函数一样实例化一个类。例如: ```scala case class Person(name: String, age: Int) val person = Person("Alice...
4,每一块知识点, 都有配套案例, 学习不再迷茫。 课程简介 第一章 环境搭建 00.导学 01.Scala简介 02.Scala程序和Java程序对比 03.Scala环境搭建 04.Scala解释器 05.案例_做最好的自己 第二章 变量和数据类型 00....
Scala作为一种融合了面向对象编程和函数式编程的语言,既支持面向对象的设计模式也支持函数式的编程风格。本文将详细介绍几种常用的设计模式及其在Scala中的实现。 #### 二、创建型设计模式 ##### 1. 工厂方法模式...
例如,关键字apply在Scala中可以用于调用一个伴生对象中的同名方法,此方法用于创建或操作伴生类的实例。 Scala的另一个重要特性是模式匹配(pattern matching),这是一个强大的工具,允许程序分支处理不同数据...
6. apply方法:Scala中的apply方法是一个特殊的函数,它允许开发者以一种特殊的方式调用对象。这使得创建轻量级的实例更加方便和直观。 7. Scaladoc:Scaladoc是Scala的文档工具,它可以生成API文档,就像Java中的...
11.7 apply和update方法 162 11.8 提取器 L2 164 11.9 带单个参数或无参数的提取器 L2166 11.10 unapplySeq方法 L2167 11.11 动态调用 L2 167 练习 171 第12章 高阶函数 L1 175 12.1 作为值的函数 175 12.2 ...
- **`apply` 和 `update` 方法**:`apply` 方法通常用于实例化对象或调用构造函数,而 `update` 方法用于更新现有的数据结构。 - **Option 类型**:Scala 使用 `Option` 类型来处理可能为空的情况,避免了空指针异常...