Other |
---|
tbd_majorUnresolved |
Blocks :
|
|
Duplicate :
|
|
Relates :
|
|
Relates :
|
|
Relates :
|
FULL PRODUCT VERSION : javac -version javac 1.8.0_60 ADDITIONAL OS VERSION INFORMATION : Linux desktop 4.1.6-1-ARCH #1 SMP PREEMPT Mon Aug 17 08:52:28 CEST 2015 x86_64 GNU/Linux Linux lab 3.13.0-63-generic #103-Ubuntu SMP Fri Aug 14 21:43:30 UTC 2015 i686 i686 i686 GNU/Linux A DESCRIPTION OF THE PROBLEM : The attached code does not compile. It should. It did at least in 1.8.0_25 REGRESSION. Last worked in version 8u40 ADDITIONAL REGRESSION INFORMATION: This code compiled and worked fine in 1.8.0_25 ERROR MESSAGES/STACK TRACES THAT OCCUR : Error:(15, 20) java: method unmodifiableList in class java.util.Collections cannot be applied to given types; required: java.util.List<? extends T> found: java.util.Collection<Main> reason: cannot infer type-variable(s) E (actual and formal argument lists differ in length) REPRODUCIBILITY : This bug can be reproduced always. ---------- BEGIN SOURCE ---------- import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.stream.Collectors; class Main { static Collection<Main> list = null; public static void main(String[] args) { Collections.unmodifiableList(list.stream().collect(Collectors.toCollection(ArrayList::new))); } } ---------- END SOURCE ---------- CUSTOMER SUBMITTED WORKAROUND : import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.stream.Collectors; class Main { static Collection<Main> list = null; static ArrayList create() { return new ArrayList(); } public static void main(String[] args) { Collections.unmodifiableList(list.stream().collect(Collectors.toCollection(Main::create))); } }
|