EDIT: Ab IntelliJ Version 2017.2 wurde dieses Problem behoben.Konstruktorreferenz inkorrekt markiert als Fehler in IntelliJ 2017.1.4
Java-Version: 1.8.0_131
IntelliJ IDEA Version: 2017.01.04
Ich habe diese Klasse:
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);
}
}
Mit javac, kompiliert es fein und funktioniert einwandfrei. Mit IntelliJ kompiliert es gut und funktioniert gut, jedoch wird die TreeMap::new
Konstruktorreferenz mit rot unterstrichen und Bad return type in method reference: cannot convert java.util.TreeMap<K, V> to T
Nachricht wird auf Hover Tooltip angezeigt.
Kann jemand diese irreführende und nervige Fehlermeldung deaktivieren, ohne wichtige, relevante Fehlermeldungen auszuschalten? Ist das ein Fehler? Wenn ja, wo kann ich es melden?
Sie sollten diese ihnen berichten, hier https://youtrack.jetbrains.com/issues/IDEA Vorgeschlagener Titel "Guter Code rot: Konstruktorreferenz kann nicht abgeleitet werden". –
das ist * definitiv * etwas zu IDEA zu berichten, da es gut kompiliert (ohne Warnungen) mit JDK 8-131, 9-157 und neuesten Eclipse - das sind die, die ich ausprobiert habe. – Eugene
@Ryan gemeldet [hier] (https://youtrack.jetbrains.com/issue/IDEA-175280) –