M S*_*ach 9 java java-8 default-method
学习java 8的默认方法.这个链接 就像互联网上的任何其他资源一样
在"最严格的意义上",默认方法是向后退一步,因为它们允许您使用代码"污染"您的接口.但它们提供了最优雅和实用的方式来允许向后兼容.它使Oracle更容易更新所有Collections类,并让您更新Lambda的现有代码.
我的理解是java 8 dev/designer在接口中提供了默认方法,因此所有实现类都不必不必要地覆盖相同的行为,因此提供向后兼容性.例如: - 如果ForEach方法不是默认方法,则实现类的每个集合都必须实现它.同意.
为了克服这个问题,我们可以让一个类提供这些默认方法的实现,然后实现类似arraylist等类可以扩展它.通过这种方式,我们可以对java基础知识(即可重用性和抽象性)进行统计,即保持界面污染较少
我相信java 8开发/设计师已经考虑过这一点,因为他们学到的东西更多,我在这里缺少一些东西.有人可以在这里帮助我们开发人员也可以作为这一重大变化吗?
为了克服这个问题,我们可以让一个类提供这些默认方法的实现,然后实现类似arraylist等类可以扩展它.
您的建议仅适用于标准JDK类(因为它们通常会扩展一些基类,例如,AbstractCollection并且AbstractList可以添加新方法的实现).
那些实现JDK接口的自定义类呢?例如,如果您有一个实现List但不扩展某些JDK List实现的类,那么您应该能够切换到Java 8而无需在类中实现新方法.
通过界面default中新方法的List实现,您无需触摸自定义类.如果您对默认实现不满意,可以稍后为这些方法添加自定义实现.
在Java 8之前,interfaces只能有abstract methods。这些方法的实现必须在单独的类中提供。因此,如果要在中添加新方法,则必须在interface实现相同接口的类中提供其实现代码。
为克服此问题,Java 8引入了其概念,default methods该概念允许接口具有实现的方法,而不会影响实现的类interface。
在default methods引入以提供向后可比性,使现有interfaces可以使用lambda表达式无须在实现类的方法。Default methods也称为defender methods或virtual extension methods。
| 归档时间: |
|
| 查看次数: |
3232 次 |
| 最近记录: |