如何解决实例化特征是什么意思?
| 我是Scala的新手,在O'Reilly的《 Programming Scala》一书中,作者展示了一些实例化特征的代码。鉴于特征在某种程度上类似于Java中的接口(尽管我知道特征在字节码中作为类实现),实例化特征是什么意思,什么是合适的用例/设计模式? 例如。:scala> val x = new T1 with T2 { type z = String val v: z = \"Z\" }
x: java.lang.Object with T1 with T2{type z = String; def zv: this.z} = $anon$1@9d9347d
解决方法
我也是Scala的新手,但是我认为您上面的示例是创建一个新的匿名对象(就像您可以使用Java一样),然后将Trait附加到新的匿名类型上。
由于Scala特性可以包含实现代码,因此假设匿名类满足特性的任何要求(例如设置值或定义“抽象”方法),则基本上可以免费获得特性的行为。
因此,您在这里所做的不是直接实例化Trait,而是为Trait创建合适的对象以使其自身附加到它,以便您可以使用Trait的功能而无需定义扩展Trait的类。
这是否回答你的问题?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。