12 java interface multiple-inheritance diamond-problem java-8
当我看到代码片段之类的时候
interface A {
void a();
void b() default { System.out.println("b"); };
void c() final { System.out.println("c"); };
}
Run Code Online (Sandbox Code Playgroud)
我有一个问题.我们还没有得到足够的Java?为什么有人需要这个呢?
Tom*_*son 36
我们需要这个,因为它会让Scala家伙非常愤怒.它们已经具有"特征"形状的相似功能,所以现在他们必须将这些功能与这些功能结合起来.
压低Scala家伙实际上是Java语言开发中的最高优先级.
Jör*_*ann 13
计划Java 8将包含某种形式的lambda和闭包支持,这将是Java语言现代化的重要一步.问题是基于接口的现有库(如集合框架)将无法直接使用这些新功能.在不破坏现有实现的情况下,无法向接口添加方法,它们将不再简单地编译.
拥有lambdas但不能轻易地将它们与标准集合一起使用,对于Java开发人员来说将是一个巨大的失望.为了lambda表达式集成到标准的集合,方法一样forEach,map或filter将是非常可取的.
此问题的解决方案是添加另一个功能,即扩展方法,它定义接口中方法的默认实现.现有的子类将使用默认方法,但也可以使用专门的,可能更好的实现来覆盖该方法.
有关扩展方法提议的更多信息,请参阅Java Enhancement Proposal 126.
我建议你看一下这个会议:http://medianetwork.oracle.com/media/show/16999
这解释了一切.最有趣的事情是允许接口进化而不重写整个代码库.这是允许大型代码库发展而不是变得越来越残缺的关键.
| 归档时间: |
|
| 查看次数: |
3747 次 |
| 最近记录: |