Générer les structures de données avec AutoValue

En Java comme dans d’autres langages, nous écrivons souvent des classes qui représentent des structures de données (appelées parfois objets métier, DTO, value objects, ou encore value types). Nous appliquons très souvent le principe d’encapsulation en exposant les valeurs à travers des getters et des setters quand la structure de données est mutable.

Mais implémentez-vous systématiquement la méthode equals de votre classe ? Et la méthode hashcode ? Si c’est le cas, equals et hashcode sont-elles cohérentes ? Et quand vous ajoutez un champ, pensez-vous à mettre à jour ces deux méthodes ? Il est pourtant important que ces méthodes soient correctement implémentées, faute de quoi on peut avoir des surprises en les insérant dans une HashMap ou un HashSet par exemple. Continuer la lecture de Générer les structures de données avec AutoValue

Retour d’expérience sur Java 8 après un an d’utilisation

JavaAlors que Java vient de fêter ses 20 ans, Java 8 a soufflé il y a peu sa première bougie. J’avais suivi de loin l’évolution de Java 8 lors de son développement sans vraiment chercher à l’utiliser en pratique. Mais le hasard fait bien les choses, et Devoxx France 2014 suivait de près sa sortie. Je me suis dit que c’était l’endroit idéal pour se familiariser avec cette toute nouvelle version. Et je n’ai pas été déçu, j’ai suivi deux universités consacrées à Java 8. La première était proposée par Rémi Forax et expliquait l’histoire des lamba et comment elles ont été implémentées, la suivante était celle de José Paumard qui nous montrait toute la puissance de l’API stream. Ainsi, de retour de Devoxx je n’ai pas mis longtemps à me familiariser avec cette nouvelle version que j’utilise maintenant quotidiennement depuis un an. Il est donc temps pour moi d’en dresser un premier bilan. Continuer la lecture de Retour d’expérience sur Java 8 après un an d’utilisation