Java 8扩展方法 - 为什么它们不被称为mixins或traits?

Mar*_*rga 7 java traits mixins java-8

据我所知,Groovy已经有了mixin,Scala有特点.C族有多重继承.那么为什么Java中的新功能称为"扩展方法"?它是同一个东西的另一个名称,还是有另一个原因?特质和混合有什么不同?他们添加了什么,他们缺少什么?


Personaly我把它们看作"实现方法"而不是"扩展方法".

Pet*_*rey 7

那么为什么Java中的新功能称为"扩展方法"?

AFAIK,这个命名来自C#.虚扩展方法仅适用于方法,而mixin和traits也适用于字段.

通过虚拟扩展方法进行接口演变 注:Brian自己称之为"Defender方法",但我认为"虚拟扩展方法"得到了更广泛的认可.

2011年JVM语言峰会 - Brian Goetz我很确定这是他谈论为什么它有这个名字的地方.

  • 好吧,实际上mixin同时提供行为和状态继承,而traits只提供行为.我知道,Scala有'Traits'并且他们获得了州遗产......但确切地说,这些是混合物. (3认同)