首页 > 解决方案 > 为什么 Java 的回调接口扩展而不在 Scala 中实现

问题描述

我正在用异步方法编写一个 kafka 生产者 API。所以,我使用了一个回调接口来打印元数据。

java代码是:

private static class ProducerCallback(ProducerRecord<String, String> record) implements Callback {.....}

斯卡拉代码:

private class ProducerCallback(record: ProducerRecord[String, String]) extends Callback{...}

为什么在scala中回调被扩展而不是实现?

标签: javascala

解决方案


为什么在 ScalaCallback中扩展而不实现?

不同语言。显然,Java 和 Scala 语言设计者在这一点上做出了不同的选择。

为什么?

我没有设法从 Scala 设计者那里找到一个明确的解释,说明他们为什么选择不复制 Java 的extends+implements区别。但是,作为一般观察,他们倾向于使用简洁/简洁的语法而不是更冗长的语法。

很明显,Scala 在没有区别的情况下“工作”,如果语言不需要进行区别,那么干净/简洁的方法就不会这样做。

另请参阅:为什么 Java / Scala 使用 extends / implements 关键字?

(为什么 Java 会做出区分?这并不重要:它是古老的历史。)


1 - 要么不存在,要么我的谷歌技能让我失望。如果有人找到了,请评论...


推荐阅读