Métodos de interfaz privada, ejemplo de caso de uso?

"El soporte para métodos privados en las interfaces se consideró brevemente para su inclusión en Java SE 8 como parte del esfuerzo para agregar soporte para Lambda Expressions, pero se retiró para permitir un mejor enfoque en tareas de mayor prioridad para Java SE 8. Ahora se propone que el soporte para los métodos de interfaz privada se llevará a cabo permitiendo que los métodos no abstractos de una interfaz compartan código entre ellos

Así dice la especificación parahttp://openjdk.java.net/jeps/213 y dice en informe de errorhttps://bugs.openjdk.java.net/browse/JDK-8071453 .

Pero realmente no puedo pensar en ningún caso de uso donde sea necesario, incluso con la breve explicación dada anteriormente. ¿Puedo pedir un ejemplo donde los "métodos de interfaz privada" son útiles en términos de código?

EDITAR: Entonces, la respuesta es que, debido a cómo se han agregado las implementaciones predeterminadas a las interfaces en Java 8, puede haber casos en los que las implementaciones predeterminadas estén utilizando la misma base de código.

Por ejemplo,

public interface MyInterface {
     default void initializeMyClass(MyClass myClass, Params params) {
         //do magical things in 100 lines of code to initialize myClass for example
     }

     default MyClass createMyClass(Params params) {
         MyClass myClass = new MyClass();
         initializeMyClass(myClass, params);
         return myClass;
     }

     default MyClass createMyClass() {
         MyClass myClass = new MyClass();
         initializeMyClass(myClass, null);
         return myClass;
     }
}

Ejemplo tonto, lo sé. Pero digamos que queremos usarinitializeMyClass(MyClass, Params) en ambos métodos Sin embargo, si lo hacemos así (método predeterminado), entoncesinitializeMyClass(MyClass, Params) será parte de la interfaz pública! Para evitar que eso suceda, solo podemos mantener el código completoinitializeMyClass(MyClass, Params) dentro decreateMyClass() métodos predeterminados Lo que resulta en la duplicación de código, lo que no es deseable.

Por lo tanto, esto causa problemas con la refactorización, y para eliminar dicha duplicación de código, se permiten métodos privados predeterminados.

¡Gracias por responder!

Respuestas a la pregunta(3)

Su respuesta a la pregunta