JDK7:钻石推断语法混淆

8

请尝试在JDK7中编译以下代码:

import java.nio.file.*;

public final class _DiamondSyntaxErrors {
  public interface InterfaceA<T> {
  }

  public abstract static class ClassA<T>
      implements InterfaceA<T> {
    protected ClassA() {
    }
  }

  public static void main(String... args) {
    // no error
    InterfaceA<Path> classA = new ClassA<>() {
    };

    // error: cannot infer type arguments for SimpleFileVisitor<>
    FileVisitor<Path> visitor = new SimpleFileVisitor<>() {
    };
  }
}

为什么第二种使用钻石语法的方式不起作用?与第一种使用方式有何重大区别?

Margus正在使用Java 7中的一个新特性计划中 - Matthew Flaschen
Java 7还没有最终版,我猜这可能是某种错误,你可以向Oracle报告。我怀疑这里没有人能够提供很多帮助。 - BjornS
2
@BjornS:好的,我会报告一个bug。我只是有这样的经验,很多“bugs”实际上并不是真正的bug,而是对某些事情的误解,所以我先在这里问一下 ;) - java.is.for.desktop
2
看到问题已经解决了,也许你可以回答说“这是一个bug。现在已经修复了。”并接受这个答案。 - Jean Hominal
1个回答

5

是的,这可能是唯一可能的“正确”答案,但由于我是作者,我还有两天才能接受它 ;) - java.is.for.desktop

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接