51.scala编程思想笔记——浅尝反射
来源:互联网 发布:淘宝云智投软件怎么用 编辑:程序博客网 时间:2024/05/16 00:42
51.scala编程思想笔记——浅尝反射
欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/50447603源码下载连接请见第一篇笔记。
反射表示拿起一个对象并将其放在镜子前面,这样它就可以发现自身的奥秘。
例如trait会自动 将一个toString方法添加到任何类中,如下:
object EchoArgs2 {
defmain(args:Array[String]) =
for(arg<- args)
println(arg)
}
[root@OEL examples]# cat Name.scala
// Name.scala
package com.atomicscala
import reflect.runtime.currentMirror
object Name {
defclassName(o:Any) =
currentMirror.reflect(o).symbol.
toString.replace('$', ' ').
split('').last
}
trait Name {
override deftoString =
Name.className(this)
}
其中className方法接受一个Any对象,并产生该对象的类名。
任何与Name特征结合的类都会自动包含一个知晓该类自身名字的toString方法。通过将this关键字传递给className, 实现了当前对象的传递。
然后调用,使用如下代码:
import com.atomicscala.AtomicTest._
import com.atomicscala.Name
class Solid extends Name
val s = new Solid
s is "Solid"
class Solid2(val size:Int) extends Name {
override deftoString =
s"${super.toString}($size)"
}
val s2 = new Solid2(47)
s2 is "Solid2(47)"
Scala的反射API比我们这里所展示的功能要强大得多。
- 51.scala编程思想笔记——浅尝反射
- 2.scala编程思想笔记——运行Scala
- 3.scala编程思想笔记——编写脚本
- 4.scala编程思想笔记——值
- 5.scala编程思想笔记——数据类型
- 6.scala编程思想笔记——变量
- 7.scala编程思想笔记——表达式
- 8.scala编程思想笔记——条件表达式
- 9.scala编程思想笔记——计算顺序
- 10.scala编程思想笔记——组合表达式
- 11.scala编程思想笔记——方法
- 12.scala编程思想笔记——类和对象
- 13.scala编程思想笔记——ScalaDoc
- 14.scala编程思想笔记——创建类
- 15.scala编程思想笔记——类中的方法
- 16.scala编程思想笔记——导入和包
- 17.scala编程思想笔记——测试
- 18.scala编程思想笔记——域
- 48.scala编程思想笔记——统一访问方式和setter
- ORA-03113: end-of-file on communication channel
- 49.scala编程思想笔记——衔接JAVA
- 50.scala编程思想笔记——应用
- C#中的继承
- 51.scala编程思想笔记——浅尝反射
- 52.scala编程思想笔记——多态
- YTU 2983: 小明的生机!
- 53.scala编程思想笔记——组合
- 54.scala编程思想笔记——使用特征
- 55.scala编程思想笔记——标记特征和case对象
- Unity5特殊目录及其目录中脚本的编译顺序
- 56.scala编程思想笔记——类型参数限制
- 57.scala编程思想笔记——使用特征构建系统