/ / Eclipse n'infère-t-il pas des génériques pour les classes anonymes? - java, eclipse, génériques

Eclipse n'infère-t-il pas des génériques pour les classes anonymes? - java, eclipse, génériques

Le code java suivant est surligné en rouge dans Eclipse mais ça compile bien. L'erreur IDE est:

Incompatibilité de type, impossible de convertir du type Optional<Runnable> de Optional<new Runnable>

Le compilateur devrait accepter les génériques inférés, mais mon IDE échoue. Existe-t-il un paramètre incorrect quelque part dans Eclipse?

Optional<Runnable> o;

o = Optional.of(new Runnable() {
@Override
public void run() {

}
});

Réponses:

1 pour la réponse № 1

Ce devrait être:

Optional <Runnable> o;

o = Optional.<Runnable>of (new Runnable () {
@Override
public void run () {
/* your code here */
}
});

1 pour la réponse № 2

Avec Java 7 activé sous Eclipse, deux lignes sont nécessaires pour gérer votre syntaxe:

Runnable t = new Runnable(){@Override public void run() {/**/}};
Optional< Runnable > o = Optional.of( t );

0 pour la réponse № 3

Comme d'autres soulignent deux lignes ou facultatif, <facultatif> de () est nécessaire.

javac (jdk 1.7) échoue:

erreur: types incompatibles o = Facultatif.of (new Runnable () { ^ required: Facultatif <Runnable> found: Optionnel << anonyme Runnable >> 1 erreur

javac (jdk 1.6) échoue également:

personne imcompatible found: Facultatif << Anonyme java.lang.Runnable >> required: facultatif <java.lang.Runnable> o = Facultatif.of (new Runnable () { ^ 1 erreur

Il semble donc que ce soit le comportement Java défini, vous ne savez pas pourquoi.