当前位置:  开发笔记 > 编程语言 > 正文

用Scala包含的Java接口实现的工厂方法意味着什么?

如何解决《用Scala包含的Java接口实现的工厂方法意味着什么?》经验,为你挑选了0个好方法。

我正在使用Scala implicits为Java接口定义一个丰富的包装器:

class RichThing { def richStuff: Unit = {} }

在伴侣对象中,我定义了隐式转换和apply工厂方法:

object RichThing { 
    implicit def rich( thing: JavaThing ) = new RichThing() 
    def apply() = new RichThing()
}

有了这个,我可以实例化接口的Java实现并像使用它一样RichThing(由于隐式转换):

new JavaThingImpl().richStuff

我也可以RichThing使用工厂方法创建一个(由于apply方法):

val a = RichThing()

我想做的是以相同的方式实例化接口的任意Java实现.这不起作用,因为Scala然后查找实现的伴随对象,但找不到:

val b = JavaThingImpl() // "not found: value JavaThingImpl"

我可以为Java实现创建一个Scala伴侣对象:

object JavaThingImpl { def apply() = new RichThing() }

但关键是要使这个工作适用于任何(特别是未知的)接口实现.

有没有办法实现这个?例如,基于RichThing对象中的隐式转换,动态地为Java实现创建Scala伴随对象?

或者从Java端创建Scala伴侣对象,也许在抽象类中?

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有