簡體   English   中英

我在Java 9中找到編譯器錯誤了嗎?

[英]Did I find a compiler bug in java 9?

我在第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);
  }

}

問題實際上出在Eclipse而非Java編譯器上。 此問題已通過Eclipse在此處提交: https : //bugs.eclipse.org/bugs/show_bug.cgi?id=532860

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM