第24讲:Scala中SAM转换实战详解
来源:互联网 发布:dgn转dwg软件 编辑:程序博客网 时间:2024/05/13 14:54
内容:
1、SAM的重大意义
2、SAM转化代码实战
def main(args: Array[String]){ var data = 0 val frame = new JFrame("SAM Testing"); val jButton = new JButton("Counter") jButton.addActionListener(new ActionListener { override def actionPerformed(event: ActionEvent) { data += 1 println(data) } })
//以上代码类似于Java中的样本代码,点击按钮后动作使data+1
为了使下面函数实现,使用隐式转换,该函数中的参数ActionEvent必须和动作函数中的参数一致;如果没有隐式转化addActionListener就会报错。
implicit def convertedAction(action: ActionEvent => Unit) = new ActionListener { override def actionPerformed(event: ActionEvent) { action(event) } } jButton.addActionListener((event: ActionEvent) => {data += 1; println(data)}) frame.setContentPane(jButton); frame.pack(); frame.setVisible(true); }
构建jButton,当有点击后动作监听器执行具体的函数体中的响应事件event。将样板代码转换为专注函数本身的处理,即为一个SAM转换的过程。之所以能够实现SAM的转化,就是因为隐式转化的时候覆写(override)了Java中的样板代码。
0 0
- 第24讲:Scala中SAM转换实战详解
- 24.Scala中SAM转换实战详解
- Scala深入浅出实战经典:24,Scala中SAM转换实战详解
- Scala深入浅出进阶经典 第52讲:Scala中路径依赖代码实战详解
- Scala深入浅出进阶经典 第53讲:Scala中结构类型实战详解
- Scala深入浅出进阶经典 第54讲:Scala中复合类型实战详解
- Scala深入浅出进阶经典 第55讲:Scala中Infix Type实战详解
- Scala深入浅出进阶经典 第56讲:Scala中Self Types实战详解
- Scala深入浅出进阶经典 第57讲:Scala中Dependency Injection实战详解
- Scala深入浅出进阶经典 第58讲:Scala中Abstract Types实战详解
- 第52讲:Scala中路径依赖代码实战详解学习笔记
- 第53讲:Scala中结构类型实战详解学习笔记
- 第54讲:Scala中复合类型实战详解学习笔记
- 第55讲:Scala中Infix Type实战详解学习笔记
- 第56讲:Scala中Self Types实战详解学习笔记
- 第57讲:Scala中Dependency Injection实战详解学习笔记
- 第58讲:Scala中Abstract Types实战详解学习笔记
- 第64讲:Scala中隐式对象代码实战详解
- PHP学习怪事(一)(3/3)
- 新浪云存储SCS的使用
- swift和storyborad环境下通过xib自定义TableViewCell
- 基于高度差的地形LOD与平截头体剪裁
- rp++ find ROP sequences
- 第24讲:Scala中SAM转换实战详解
- js函数库大全
- 思考2015.12.20
- 二叉树创建、三种遍历、叶子节点数
- 再次回来
- Maven 3.3 JDK1.7
- 设计模式(十六)---观察者模式
- ListView的OnScrollListener接口
- Linux驱动总结3- unlocked_ioctl和堵塞(waitqueue)读写函数的实现