描述:通过利用反射机制为静态语言添加动态属性。从而使得参数类型不受限与某个已经命名的类型。结构体类型通过花括号{}进行定义,花括号中给出方法标签(抽象方法)在时用时候具体给出具体实现
package cn.scala object Scala_structure1 { /** 结构体参数 */ def structure_method(red:{def close():Int }):Int={ red.close() } def main(args: Array[String]): Unit = { /* 一 方式 */ /**调用结构体传入参数,实现close函数*/ val a=Scala_structure1.structure_method(new { def close() ={println("你好结构体。"); 1} }) println(a) /* 二 方式 */ val fils=Scala_structure1.structure_method(Files) println(fils) /* 三 方式 */ val fils1=Scala_structure1.structure_method(new Files) println(fils1) /*类和半生对象相同方法时候,调用谁就是谁的*/ new Files().close() } } class Files{ def close()={ println("普通类Files") 1 } } object Files{ def close()={ println("单例对象中的Close方法") 2 } def apply(): Files = new Files() }
package cn.scala object Scala_structure1 { /** 结构体参数 */ def structure_method(red:{def close():Int }):Int={ red.close() } def main(args: Array[String]): Unit = { /* 一 方式 */ /**调用结构体传入参数,实现close函数*/ val a=Scala_structure1.structure_method(new { def close() ={println("你好结构体。"); 1} }) println(a) /* 二 方式 */ val fils=Scala_structure1.structure_method(Files) println(fils) /* 三 方式 */ val fils1=Scala_structure1.structure_method(new Files) println(fils1) /*类和半生对象相同方法时候,调用谁就是谁的*/ new Files().close() } } class Files{ def close()={ println("普通类Files") 1 } } object Files{ def close()={ println("单例对象中的Close方法") 2 } def apply(): Files = new Files() }
运行结果:
你好结构体。
1
单例对象中的Close方法
2
普通类Files
1
普通类Files