例如假设我有
abstract class OrderRouter extends Market {
}
我通常会按如下方式实例化
new OrderRouter with NYSE
我如何将上面的行翻译成java?纽约证券交易所是扩展市场的特征。
最佳答案
看问题How are Scala traits compiled into Java bytecode? ,以及接受的答案。
总结是,假设 NYSE 有 getOrderBook()
方法,Java 版本如下所示:
new OrderRouter() {
public OrderBook getOrderBook() {
return NYSE$class.getOrderBook();
}
}
Scala 编译器为合成类生成字节码,通过组合/包装混合所有特征实现。由于
javac
没有此功能,您需要自己将 trait 方法的委托(delegate)连接到 trait 的单例对象。
关于scala - 如何将 Scala 特征转换为 java?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7307378/