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>
deOptional<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 № 1Ce 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.