在java 8中引入静态方法和默认方法有什么好处,因为我发现它会增加代码中的复杂性和模糊性。请带一些这个。java中允许声明静态方法这样做的好处是什么
-2
A
回答
2
优点很明显:界面中的静态方法允许将工厂(如Stream.of
)放置在他们所属的地方。以前,您需要一个StreamUtil
类或类似的来保存它们。为了在Collections API中引入面向Stream的良好性,Defender方法(“默认”)是绝对必须的,并且它们是一个非常有用的特性,允许使用便捷方法自由增长API,这些方法只依赖其他方法公共API。
没有复杂性或模糊性被添加到您的代码,特别是因为静态方法不可继承。
1
具有默认方法的最大优点是您可以为新功能演化API,即使它已经发布也不会破坏API用户的实现。
静态方法可以省去实用程序类,因为可以在接口中编写实现。
相关问题
- 1. 为什么java允许这样做?
- 2. 是否可能的良好做法时声明方法静态?
- 3. 为什么C#不允许变量在方法中声明为静态?
- 4. 在ClassA中导入ClassA的声明?为什么设计师允许这样做?
- 5. 是否允许在Java中声明顶级类为静态
- 6. C - 为什么我允许这样做?
- 7. 为什么静态块中不允许使用静态字段声明?
- 8. 为什么java的允许静态泛型方法
- 9. 在Python中这样做的最好方法是什么?
- 10. 这个Fortran参数声明是做什么的,它为什么这样做?
- 11. 这样做的方法是什么?
- 12. 在非静态类中声明一个静态方法的意义是什么?
- 13. 不是允许在main方法声明
- 14. 这个typedef声明是做什么的?
- 15. Ruby中的Java静态方法是什么样的?
- 16. 什么是声明静态可变值的正确方法
- 17. 为什么允许静态方法调用私有方法?
- 18. 这是什么样的声明者?
- 19. 这是什么样的声明?
- 20. 在Java中,静态方法中声明的变量本身是静态的吗?
- 21. 静态方法get - 这是不好的做法吗?
- 22. 这个错误的含义是什么“声明实例方法后不允许声明实例字段”。
- 23. 什么应该是“你不允许这样做......”的Http状态码?
- 24. 为什么在静态方法中不允许使用“this”?
- 25. 为什么applet中允许使用非静态方法?
- 26. 允许在非抽象类中声明抽象方法的目的是什么?
- 27. 是否允许使用foreach这样做?
- 28. 在Java API中是否有一个LayoutManager允许我这样做?
- 29. 什么时候应该在基类中声明静态方法?
- 30. 处理中不允许的静态方法?
你能解释一下“你的代码会增加复杂性和模糊性”吗? – Pshemo 2015-03-02 20:07:03
请参阅[这里](http://stackoverflow.com/q/19998309/2711488)和[这里](http://stackoverflow.com/q/25098937/2711488) – Holger 2015-03-03 09:21:54