Es scheint ein Netbeans-Problem zu sein und ich kann das Problem nicht reproduzieren, wenn ich javac von der Kommandozeile aus benutze. Ich habe einen Fehlerbericht eingereicht.
Ihr Code würde nicht funktionieren, selbst wenn Sie Lambdas anstelle von Methodenreferenzen verwenden, da der Stream bereits erschöpft ist.
%Vor% Streams sind einmalig. Aber lassen wir das auseinander. Wenn Sie die Methodenreferenzversion verwenden, erfasst sie Number
als Typparameter und nicht Comparable
, wo Number
keine compareTo
vielleicht enthält, weil Number
hier spezifischer ist.
Wenn Sie nur Comparable
verwenden, funktioniert es gut
IMO (nur um vorsichtig zu sein): Ich glaube, es ist ein Fehler.
Was ich eigentlich glaube: Es ist definitiv ein Bug.
Edit: Es stellt sich heraus, dass es sich um einen Bug handelt, der von Brian Goetz bestätigt wurde. Ссылка . Laut der Fehlerdatenbank wurde dies in 8u40
behobenDas Initialisierungsproblem für die Call-Site wird über JDK-8058112 behoben verfügbar in JDK 8u40 b17 oder später.
Für diejenigen, die dieses Problem 2017 mit java8 1.8.0_141
haben, gibt es einen weiteren Fehlerbericht JDK- 8142476 und die Fix-Version ist nur java9
.
Tags und Links java java-8 generics method-reference