我在第11行的Eclipse中遇到编译错误。
类型不匹配:无法从List<Object>
转换为List<JavaCompilerBug.Foo>
我相信这段代码应该编译,我已经创建了一个演示问题的简短示例:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.function.Function;
public class JavaCompilerBug {
public static void main(String[] args) {
List<String> vals = Arrays.asList("1", "2", "3");
List<Foo> foos = map(vals, s -> Foo.with(last(vals)));
}
public static class Foo {
public static Foo with(String value) {
return new Foo();
}
public static Foo with(Foo value) {
return new Foo();
}
}
public static <A, B> List<B> map(List<A> input, Function<A, B> function) {
List<B> ret = new ArrayList<>();
for (A element : input) {
ret.add(function.apply(element));
}
return ret;
}
public static <T> T last(List<T> c) {
return c.get(c.size() - 1);
}
}
答案 0 :(得分:4)
问题实际上是Eclipse而不是Java编译器。此问题已在Eclipse中提交:https://bugs.eclipse.org/bugs/show_bug.cgi?id=532860