Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Java8使用默认方法而不是扩展方法_Java_Java 8 - Fatal编程技术网

为什么Java8使用默认方法而不是扩展方法

为什么Java8使用默认方法而不是扩展方法,java,java-8,Java,Java 8,我想知道Java8中的默认方法相对于Scala中的扩展方法或隐式转换有什么好处?例如,我似乎无法使用外部库中的默认方法修改现有代码,这很奇怪。因为它的用途与您描述的用例完全相反。默认方法允许库代码更改其API,而无需更改和重新编译调用代码。它只是一个帮助API和ABI兼容的工具,而不是覆盖第三方代码实现细节的工具 因为它的用途与您描述的用例完全相反。默认方法允许库代码更改其API,而无需更改和重新编译调用代码。它只是一个帮助API和ABI兼容的工具,而不是覆盖第三方代码实现细节的工具 谢谢。但我

我想知道Java8中的默认方法相对于Scala中的扩展方法或隐式转换有什么好处?例如,我似乎无法使用外部库中的默认方法修改现有代码,这很奇怪。

因为它的用途与您描述的用例完全相反。默认方法允许库代码更改其API,而无需更改和重新编译调用代码。它只是一个帮助API和ABI兼容的工具,而不是覆盖第三方代码实现细节的工具

因为它的用途与您描述的用例完全相反。默认方法允许库代码更改其API,而无需更改和重新编译调用代码。它只是一个帮助API和ABI兼容的工具,而不是覆盖第三方代码实现细节的工具

谢谢。但我不明白为什么会这样。为什么他们会限制这么小的一部分增强?我所知的任何地方都没有真正解释过这一点(至少最初的JSR规范没有扩展这种行为的任何理由)。然而,我想原因是,与Java7相比,这是一个侵入性小得多的更改,因此更容易实现&获得批准。谢谢。但我不明白为什么会这样。为什么他们会限制这么小的一部分增强?我所知的任何地方都没有真正解释过这一点(至少最初的JSR规范没有扩展这种行为的任何理由)。然而,我认为原因是,与Java7相比,这是一个侵入性小得多的更改,因此更容易实现和获得批准。