fork download
  1.  
  2. import java.util.ArrayList;
  3. import java.util.Arrays;
  4. import java.util.List;
  5. import java.util.Optional;
  6.  
  7. public class Main {
  8.  
  9. public static void main(String[] args) throws Throwable {
  10. List<Object> l = Arrays.<Object>asList(1, Optional.of("foo"), 2, Optional.of("bar"));
  11. List<Optional<?>> result = filterByClass(l, Optional.class);
  12. }
  13.  
  14. public static <T> List<T> filterByClass(List<?> list, Class<? extends T> clazz) {
  15. List<T> filtered = new ArrayList<>();
  16. for (Object o : list) {
  17. if (clazz.isInstance(o)) {
  18. filtered.add(clazz.cast(o));
  19. }
  20. }
  21. return filtered;
  22. }
  23. }
  24.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
Main.java:11: error: incompatible types: cannot infer type-variable(s) T
		List<Optional<?>> result = filterByClass(l, Optional.class);
		                                        ^
    (argument mismatch; Class<Optional> cannot be converted to Class<? extends Optional<?>>)
  where T is a type-variable:
    T extends Object declared in method <T>filterByClass(List<?>,Class<? extends T>)
1 error
stdout
Standard output is empty