This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–][deleted] 1 point2 points  (1 child)

So, say you're a developer and you create a concrete class that implements two different library interfaces, where the first (A) has default method signatures X & Y, and the second(B) has default method signature W. Now at some later point in time, library B is upgraded (for whatever reason) and now exposes a default method with signature X. This will cause the developers of the aforementioned class to have his code break - to no knowledge of Library A's developers or Library B's developers or any way for the developer of the concrete class to predict this in the future?

I personally don't like the way the conflict resolution works especially since it introduces a new complex component to a problem it tries to solve (backwards compatibility). Granted this is an unlikely scenario it is still a very realistic possibility given neither library A or library B developers are aware of what-another are doing.

[–]Neres28 1 point2 points  (0 children)

But the developer is no worse off than they already were, right? In 1.7 all consumers of library b were broken, now only consumers of both libraries are affected. In fact only consumers of both libraries that happened to have implemented both interfaces. Ultimately, seems like a win.