¿Hay alguna diferencia entre poner explícitamente el tipo en el operador de diamante y dejar que Java lo descubra?

¿Hay alguna diferencia entre la inicialización a través de:

MyWrapper<String> wrapper = new MyWrapper<String>();

vs inicialización a través de:

MyWrapper<String> wrapper = new MyWrapper<>();

¿Hay alguna razón por la que uno quisiera usar el primero sobre el segundo? Veo mucho de lo anterior; No estoy seguro de que sea porque eso es a lo que la gente está acostumbrada, o hay una razón por la que querrías escribirlo de esa manera.

Respuestas a la pregunta(4)

Su respuesta a la pregunta