大数据全系列 教程
1869个小节阅读:465.1k
目录
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
在之前的类型学习中,我们已经学习了自动类型转换,精度小的类型可以自动转换为精度大的类型(比如Byte->Short->Int->Long),这个转换过程无需开发人员参与,由编译器自动完成,这个转换操作我们称之为隐式转换。
在其他的场合,隐式转换也起到了非常重要的作用。如Scala在程序编译错误时,可以通过隐式转换中类型转换机制尝试进行二次编译,将本身错误无法编译通过的代码通过类型转换后编译通过。慢慢地,这也形成了一种扩展功能的转换机制。
补充:开放-封闭原则(OCP),该原则的基本思想是:
xxxxxxxxxx
package com.itbaizhan.chapter09
object ImplicitTransform1 {
def main(args: Array[String]): Unit = {
//TODO 1.两种不同类型,它是如何自动类型转换的呢?底层就是通过隐式类型转换完成的。
val it: Int = 8
val lg: Long = it
}
}
查看该类编译后文件转换为Java代码如下:
xxxxxxxxxx
public final class ImplicitTransform1$ {
public static ImplicitTransform1$ MODULE$;
static {
new ImplicitTransform1$();
}
public void main(final String[] args) {
int it = 8;
long lg = (long)it;
.MODULE$.println(BoxesRunTime.boxToLong(lg));
}
private ImplicitTransform1$() {
MODULE$ = this;
}
}
实时效果反馈
1. 关于Scala隐式转换的描述,错误的是:
A 精度小的类型可以自动转换为精度大的类型(比如Byte->Short->Int->Long),这个转换过程无需开发人员参与,由编译器自动完成,这个转换操作我们称之为隐式转换。
B Scala在程序编译错误时,可以通过隐式转换中类型转换机制尝试进行二次编译,将本身错误无法编译通过的代码通过类型转换后编译通过。
C 隐式转换不符合OCP原则。
答案:
1=>C 符合OCP原则。