En Java, langage orienté objet par excellence, il est possible, depuis la révision 8, de définir des fonctions 'lambdas' comme objets. L'application d'une telle fonction se fait avec une syntaxe un peu différente des autres langages : une fonction lambda étant (extérieurement similaire à) un objet, c'est une méthode de cet objet que l'on fait agir sur le ou les argument(s). De plus, en cohérence avec le caractère fortement typé du langage, il faut connaître les types du ou des argument(s), ainsi que du résultat, pour déterminer la syntaxe : il n'existe pas de syntaxe 'universelle' y=f(x), valable quels que soient les types de x et y. Dans l'exemple ci-dessous, la fonction qui à l'entier (integer) n fait correspondre l'entier n+10, implémente l'interface fonctionnelle IntUnaryOperator, dont la méthode d'application est applyAsInt(int n). À l'affectation de l'objet-fonction ajoute10 par appel de la méthode Ajouteur(int nombre), il y a bien création d'une clôture, par capture du paramètre nombre : Tout se passe comme si une classe anonyme encapsulant le paramètre était instanciée (ce qui n'est pas la manière dont le compilateur traite ce code : il n'y a pas de fichier de classe anonyme pour les lambdas.).