Scala中的isInstanceOf和asInstanceOf区别

判断对象是否属于某个给定的类,可以用isInstanceOf方法;用asInstanceOf方法将引用转换为子类的引用。

  1. obj.isInstanceOf[T]就如同Java的obj instanceof T 判断obj是不是T类型。
  2. obj.asInstanceOf[T]就如同Java的(T)obj 将obj强转成T类型。

原文地址:https://www.cnblogs.com/cosmos-wong/p/11441169.html

时间: 2024-11-01 19:28:50

Scala中的isInstanceOf和asInstanceOf区别的相关文章

Scala中 object 和 class的区别

object 在scala中没有静态方法和静态字段,所以在scala中可以用object来实现这些功能,直接用对象名调用的方法都是采用这种实现方式,例如Array.toString.对象的构造器在第一次使用的时候会被调用,如果一个对象从未被使用,那么他的构造器也不会被执行:对象本质上拥有类(scala中)的所有特性,除此之外,object还可以一扩展类以及一个或者多个特质:例如, abstract class ClassName(val parameter){} object Test exte

Scala 中Array,List,Tuple的区别

虽然学了一段时间的Scala了,但是总觉得基础不是太扎实,还有很多的基础知识比较模糊,于是最近又打算重新学习基础. Scala中的三种集合类型包括:Array,List,Tuple.那么到底这三种有哪些异同呢?说实话,我之前一直没弄明白,所以今天特意花了点时间学习了一下. 相同点: 1.长度都是固定的,不可变长 2.早期的Scala版本,Array.List都不能混合类型,只有Tuple可以,2.8版本以后,3者的元素都可以混合不同的类型(转化为Any类型) 不同点: 1.Array 中的元素值

Scala中 => Unit 与 () =>Unit的区别

() => Unit ---> 是一个函数:=> Unit --> 是一个执行结果为Unit的表达式 code: => Unit是 by name 传递参数.参数是一个返回值为Unit的代码块.在传递的时候,参数没有被调用.比如: def test(code : => Unit){ println("start") code // 这行才会调用传入的代码块,写成code()亦可 println("end") } test{// 此

Scala中class和object的区别

1.class scala的类和C#中的类有点不一样,诸如: 声明一个未用priavate修饰的字段 var age,scala编译器会字段帮我们生产一个私有字段和2个公有方法get和set ,这和C#的简易属性类似:若使用了private修饰,则它的方法也将会是私有的.这就是所谓的统一访问原则. [java] view plain copy print? //类默认是public级别的 class Person{ var age=18  //字段必须得初始化() def Age=age //这

【Todo】【转载】Scala中Array, List, Tuple的区别

参考了这篇文章: https://my.oschina.net/u/1034176/blog/512314 1. 在Scala 2.7中,Array.List都不能混合类型,只有Tuple可以:而在Scala以上版本中,3者的元素都可以混合不同的类型(转化为Any类型),只不过是当使用混合类型时,Array和List会将元素类型转化为Any类型,而Tuple则保留每一个元素的初始类型. 2. 可变性 3. 关于初始化 Array 1) val array= new Array[String](3

转载: scala中span和partition区别

scala中的partition span splitAt groupBy 可把Collection分成:满足条件的一组,其他的另一组. partitionspan List(1,9,2,4,5).span(_<3)       // (List(1),List(9, 2, 4, 5)),碰到不符合就结束 List(1,9,2,4,5).partition(_<3) // (List(1, 2),List(9, 4, 5)),扫描所有 splitAt // (List(1, 3),List(5

在Scala中函数和方法有什么区别

方法可以作为一个表达式的一部分出现(调用函数并传参),但是方法(带参方法)不能作为最终的表达式, 但是函数可以作为最终的表达式出现: scala> //定义一个方法 scala> def m(x:Int) = 2*x m: (x: Int)Int scala> //定义一个函数 scala> val f = (x:Int) => 2*x f: Int => Int = <function1> scala> //方法不能作为最终表达式出现 scala&g

Scala中的类、接口及协变和逆变

 4.   OOP 4.1.     类class 4.1.1.  定义 例子1: class User { var name = "anonymous" var age:Int = _ val country = "china" def email = name + "@mail" } 使用: val u = new User // var定义的属性可读可写 u.name = "qh"; u.age = 30 print

深入理解Scala中的隐式转换系统

博客核心内容: 1.Scala中的两种隐式转换机制以及隐式视图的定义方式 2.Scala中的隐式绑定可能所处的位置以及如何更好的使用隐式转换 3.Scala中的隐式转换相关操作规则 4.Scala中的隐式参数 5.Scala中的隐式类 6.Scala中的隐式对象 7.Scala中的两种隐式类型约束(结合Scala中的类型系统) 8.Predef类中的implicitly方法的用法介绍以及Ordering类型转化为Oredered类型的方式 1.Scala中的两种隐式转换机制以及隐式视图的定义方式