2010-11-02 67 views
8

尝试编译下面的代码在JDK7: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<>() { 
    }; 
    } 
} 

为什么没有钻石语法工作的第二个用法?

第一次使用有什么重大区别?

+0

Margus,他正在为Java 7使用一项新功能[计划](http://code.joejag.com/2009/new-language-features-in-java-7/)。 – 2010-11-02 06:38:41

+0

Java 7尚未最终确定,我会认为这是一种错误,你可以将它报告给Oracle。我怀疑这里的任何人都不会对此有所了解。 – BjornS 2010-11-02 07:56:52

+2

'@ BjornS':好的,我会报告一个错误。我只是有这样的经验,很多“错误”不是错误,而是误解,所以我先问这里) – 2010-11-02 12:23:19

回答

5

提交一个bug report
别人日提交similar bug report用相同的例子;)
现在固定(here)。

+0

是的,这可能是唯一可能的“正确”答案,但由于我是作者,所以我有2天时间才能接受;) – 2010-11-10 22:08:08