web-dev-qa-db-fra.com

Java 8 Lambdas ne fonctionne pas, tout le reste de Java 8 fonctionne bien

J'ai découvert que Java 8 est officiellement publié maintenant. Il semble que j'ai besoin d'Eclipse Luna 4.4 pour que cela fonctionne. J'ai donc téléchargé Luna et l'ai installé. J'ai également importé tous mes projets de mes autres Eclipse, tout a fonctionné comme prévu. Quand j'ai voulu essayer Java 8, j'ai rapidement découvert que je devais d'abord l'installer. Après l'avoir installé, j'ai réussi à changer JRE 8 par défaut.

Ma question est: pourquoi puis-je utiliser la nouvelle API date et heure, mais je ne peux pas utiliser les nouvelles expressions Lambda?

Quelques informations qui pourraient être utiles:

  • J'utilise un Mac
  • Je suis très certain que l'API temporelle fonctionne (même la petite Java Doc Box dit que c'est depuis la 1.8))

Cela pourrait-il avoir quelque chose à voir avec le fait que je n'ai pas installé Eclipse avec Java 8 inclus?

26
Kametrixom

Tout d'abord, vous n'avez pas besoin d'utiliser Luna - il y a un patch de fonctionnalité pour Kepler qui fonctionne très bien.

Deuxièmement, la partie "compatibilité source" de la boîte de dialogue Java Compiler doit être 1.8. Sinon, même si vous êtes autorisé à utiliser la bibliothèque fonctionnalités de Java 1.8, vous ne pourrez pas utiliser les fonctionnalités du langage ). (Ce n'est pas seulement des lambdas - il y a des références de méthode, des méthodes statiques dans les interfaces et des méthodes par défaut par exemple.) Voici où chercher:

Java 1.8 compiler settings

Il serait rare que vous souhaitiez utiliser les fonctionnalités de la bibliothèque à partir de 1.8 mais garder la compatibilité source/classe avec 1.7 ou antérieur, mais je suppose que cela pourrait être utile si vous écriviez du code qui devait s'exécuter sur différents JRE, mais vous pourriez avoir certaines implémentations de fonctionnalités qui nécessitaient Java 1.8 et ne seraient tout simplement pas utilisées sur les JRE précédents.

63
Jon Skeet