Hola, tienes razón en que hay un conflicto o no equivalencia exacta de tipos. No obstante, en este caso lo que hace el compilador es un parseado automático, automáticamente te convierte de int a Integer o viceversa si le es posible. De este modo lo que hace el compilador es transformar al tipo necesario.
Puedes declarar entero como Integer y podríamos decir que evitas esa conversión de tipos y es más correcto, aunque en este caso no tiene demasiada relevancia.
El compilador realiza ciertas acciones de forma automática en segundo plano. "Se puede hacer" todo lo que te permita el compilador, aunque hay ciertas cosas que aunque se pueden hacer podrían calificarse como malas prácticas de programación, pero en este caso como te he comentado tiene poca importancia.
Saludos