EDIT: À partir de IntelliJ version 2017.2, ce problème a été corrigé.La référence du constructeur est incorrectement marquée comme erreur dans IntelliJ 2017.1.4
version Java: 1.8.0_131
IntelliJ IDEA version: 2017.1.4
J'ai cette classe:
public class MethodReferenceWithArguments {
static <T, U> T createWith(Function<? super U, ? extends T> methodRef, U arg) {
return methodRef.apply(arg);
}
public static void main(String[] args) {
Map<String, String> map = createWith(
TreeMap::new,
Comparator.<String>reverseOrder());
map.put("aaa", "ONE");
map.put("zzz", "TWO");
System.out.println(map);
}
}
Avec javac, il compile bien et fonctionne très bien. Avec IntelliJ, il compile bien et fonctionne très bien, cependant la référence constructeur TreeMap::new
est soulignée en rouge et le message Bad return type in method reference: cannot convert java.util.TreeMap<K, V> to T
est affiché sur l'info-bulle hover.
Est-ce que quelqu'un sait comment désactiver ce message d'erreur trompeur et ennuyeux sans désactiver les messages d'erreur importants et pertinents? Est-ce un bug? Si oui, où puis-je le signaler?
Vous devez le signaler à eux, ici https://youtrack.jetbrains.com/issues/IDEA Titre suggéré "Bon code rouge: la référence du constructeur ne peut pas être déduite". –
c'est * certainement * quelque chose à rapporter à IDEA car il compile très bien (sans avertissements) avec les JDK 8-131, 9-157 et le dernier eclipse - ce sont ceux que j'ai essayés. – Eugene
@Ryan Signalé [ici] (https://youtrack.jetbrains.com/issue/IDEA-175280) –