<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Comparator on Devops Monk</title><link>https://devops-monk.com/tags/comparator/</link><description>Recent content in Comparator on Devops Monk</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 04 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://devops-monk.com/tags/comparator/index.xml" rel="self" type="application/rss+xml"/><item><title>Default and Static Interface Methods: Backwards-Compatible API Evolution</title><link>https://devops-monk.com/tutorials/java8/default-static-methods/</link><pubDate>Mon, 04 May 2026 00:00:00 +0000</pubDate><guid>https://devops-monk.com/tutorials/java8/default-static-methods/</guid><description>The Problem: Evolving Interfaces Without Breaking Implementations Before Java 8, adding a method to a widely-used interface was a breaking change. Every class implementing that interface would fail to compile until it added the new method.
This was the exact problem Oracle faced when designing the Streams API. To make Collection.stream() work, Collection needed a stream() method. But Collection has thousands of implementations — add an abstract method and every third-party library breaks.</description></item></channel></rss>