特殊意味着它们为您提供了无法获得的功能,因此它们以特殊方式由编译器处理.示例:'DelayedInit' - 将所有init代码转换为main方法,'Dynamic' - 所有方法的代理等
Kev*_*ght 12
目前,我所知道的唯一特殊特征是DelayedInit和Dynamic.
继承自这些特征的任何东西也会得到编译器的特殊处理,就像使用App哪个子类一样DelayedInit.
值得注意的是,任何特征都可能被某些库,框架或编译器插件用作标记,以"为您提供无法获得的功能".这两个是默认编译器特别识别的唯一特征.
除了标记特征之外,还有一些注释需要特别处理,scala.annotation并且scala.reflect是查找这些@specialized注释的好地方,包中还有注释scala和编译器插件中的一些注释(例如分隔连续).
soc*_*soc 10
还有scala.Singleton.
它是一个final trait并且在编写代码时不能正常使用,但是每个人都使用了一些类似的单例object Foo已经间接使用它.
Singleton 编译器使用它来扩展单例,因此:
scala> object Foo
defined module Foo
scala> Foo.isInstanceOf[Singleton]
res0: Boolean = true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
389 次 |
| 最近记录: |