| import java.util.*; |
| |
| class Test { |
| |
| List<String> getList(Function<Object, String> function) { |
| /* |
| * When the first argument below is a raw type it turns red because IDEA thinks the return |
| * type is Collection<>. javac and Eclipse don't care |
| */ |
| return transform(new ArrayList(), new ArrayList<String>(), function); |
| } |
| |
| <R, S, T extends Collection<S>> T transform(Iterable<? extends R> oldCollection, T newCollection, Function<R, S> function) { |
| for (R r : oldCollection) { |
| newCollection.add(function.apply(r)); |
| } |
| return newCollection; |
| } |
| |
| interface Function<X, Y> { |
| Y apply(X input); |
| } |
| } |