scala – 延迟特征初始化
发布时间:2020-12-16 18:43:48 所属栏目:安全 来源:网络整理
导读:我需要一个智能的组件组合机制,它允许混合特性在组合组件之后初始化.以下抛出NullPointerException: class Component { def addListener(pf: PartialFunction[Any,Unit]) {}}trait DynamicComponent { protected def component: Component component.addLis
我需要一个智能的组件组合机制,它允许混合特性在组合组件之后初始化.以下抛出NullPointerException:
class Component { def addListener(pf: PartialFunction[Any,Unit]) {} } trait DynamicComponent { protected def component: Component component.addListener { case x => } } class Foo extends DynamicComponent { protected val component = new Component } new Foo // -> NullPointerException 以下内容对我来说不是选项: >使用protected lazy val组件;这会产生几十个需要变得懒惰的val,这是我不想要的. 我可以使用单个init()调用,但仅限于以下条件: >所有混合的特征都可以很容易地在这一个调用中声明被调用 解决方法
您可以通过使用早期定义来延迟特征的初始化. (见
scala language specification第5.1.6节)
class Foo extends { protected val component = new Component } with DynamicComponent (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |