Scala之对象的具体使用(小结)

  

  

前面学习了Scala的方法,接着学习Scala中对象的

  

  

对象在Scala有两种含义,在Java中,其代表一个类的实例,而在Scala中,其还是一个关键字,本篇首先将会把对象当成一个类的实例看待,展示如何将对象从一种类型转化为另一种类型,之后将展示如何创建单例对象,Scala中还存在包对象,在Scala中,经常有如下定义

        类型Throwable=java.lang.Throwable   异常类型=java.lang.Exception   类型错误=java.lang.Error   类型Seq [+]=scala.collection.Seq[一]   val Seq=scala.collection.Seq      

使用类型定义可以使得代码更为简洁,可使用伴生对象来创建静态方法,并且伴生对象可以使得在创建类对象时不需要使用新关键字,如下所示

        val兄弟姐妹=列表(人(“金”),(“茱莉亚”)、人(“肯尼”))      

<强> 2.1对象转化

  

1。问题描述

  

你需要将一个类的实例从一种类型转化为另一种类型,如动态创建对象

  

2。解决方案

  

使用asInstanceOf方法进行类型转化,如下的查找方法返回的对象将给转化为识别器对象

        val识别器=cm.lookup(“识别器”).asInstanceOf(识别器)      

以上代码在Java中如下

        识别器识别器=(识别器)cm.lookup(“识别器”);      

asInstanceOf方法是定义在任何类中的,所以任何类中都可以使用该方法

  

3。讨论

  

在动态编程中,经常需要从一个类转化为另一个类,如在春天框架中使用ApplicationContext文件来初始化Bean

     //打开/阅读应用程序上下文文件   val ctx=new ClassPathXmlApplicationContext(“中”)//实例化我们的狗和猫从应用程序上下文对象   val狗=ctx.getBean(“狗”).asInstanceOf(动物)   val猫=ctx.getBean(“猫”).asInstanceOf(动物)      

在进行数字类型转化时,也可以使用asInstanceOf方法

  

 Scala之对象的具体使用(小结)

  

当需要与Java进行交互时,也可以使用asInstanceOf方法

     =val对象数组(“a”, 1)   val arrayOfObject=objects.asInstanceOf [Array[对象]]   AJavaClass.sendObjects (arrayOfObject)      

与Java类似,类型转化可能会抛出ClassCastException异常
  

  

 Scala之对象的具体使用(小结)

  

可以使用try/catch来解决此问题

  

<强> 2.2与Java的. class对应的方法

  

1。问题描述

  

当一个API需要你传递阶层对象,在Java中,你可以使用. Class,但是在Scala则行不通

  

2。解决方案

  

使用Scala的名为方classOf法,如下所示

        新DataLine val信息=P畔?名为[TargetDataLine], classOf null)      

在Java中则使用如下

        信息=new DataLine.Info (TargetDataLine。类,null);      

名为方classOf法定义》在预定义对象中,因此可以在没有进口情况直接使用

  

3。讨论

  

该方法可以让你开始学习反射,如下示例可以访问字符串类的方法

  

 Scala之对象的具体使用(小结)

  

<强> 2.3确定对象的类

  

1。问题描述

  

在Scala中,你不需要显示的声明类型,你偶尔也想要打印一个对象的类或类型以明白Scala的工作机制

  

2。解决方案

  

你可以使用对象的getClass方法来确定Scala为你自动赋值的类型,如当需要了解可变参数的工作流程时,可以调用getClass方法,得知不同情况,类型也不相同

        def printAll(数字:Int *) {   println(“类:”+ numbers.getClass)   }      

当使用多个参数调用printAll方法和不使用参数调用printAll方法,其结果不相同

  

 Scala之对象的具体使用(小结)

  

当处理Scala的XML库时,该方法非常有效,可以知道在不同情形下所处理的类,如下,& lt; p>标签下包含了一个子类

Scala之对象的具体使用(小结)